【问题标题】:AutoResizing a button based on title text content根据标题文本内容自动调整按钮大小
【发布时间】:2013-05-25 19:39:35
【问题描述】:

所以我有一个奇怪的问题,可能是错误或我很愚蠢。

我在单元格中有一个按钮。该单元格显示登录用户的 Facebook 好友。如果他们已经是应用程序的用户,它会将按钮显示为“播放”,否则会显示“邀请我”...

UIButton *playButton = (UIButton *)[cell.contentView viewWithTag:30];
playButton.backgroundColor = [UIColor clearColor];
[playButton setBackgroundImage:[[UIImage imageNamed:@"fbCell_Invite_30h"] resizableImageWithCapInsets:UIEdgeInsetsMake(15, 5, 15, 5)] forState:UIControlStateNormal];    
playButton.titleLabel.text = @"Invite me";
if ([self.fbFriendsUsingApp containsObject:[friend valueForKey:@"id"]]) {
    playButton.titleLabel.text = @"Play";
}

这一切都很好,不是问题。但是,当按钮文本是邀请我时,它显示如下:

在故事板界面构建器中,按钮设置如下:

奇怪的是,如果我单击中间箭头 使宽度拉伸,标题文本停止工作,它们都显示“播放”???

【问题讨论】:

    标签: ios uitableview ios5 uibutton autoresize


    【解决方案1】:

    尝试使用

    设置按钮的文本

    [playButton setTitle:@"Invite Me" forState:UIControlStateNormal];

    而不是

    playButton.titleLabel.text = @"Invite Me;

    我发现如果我不使用上面的第一种方法,按钮文本的更改不会显示出来。

    【讨论】:

    • 谢谢,没想到。
    【解决方案2】:

    您可以找到您设置为按钮标签的NSString 的大小,然后相应地调整按钮的大小:

    CGSize labelSize = [labelString sizeWithFont:[UIFont systemFontOfSize:12]]; 
    [button setFrame:CGRectMake(10,0,labelSize.width, labelSize.height)];
    

    您可能希望在 CGSize 中添加一点作为填充,但可以使用它并找到您想要的结果。

    【讨论】:

      猜你喜欢
      • 2012-03-08
      • 2013-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-04
      相关资源
      最近更新 更多