根据标题文本内容自动重新设置按钮

时间:2013-05-25 19:39:35

标签: ios uitableview ios5 uibutton autoresize

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

我在单元格中有一个按钮。单元格显示登录用户的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";
}

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

在storyboard界面构建器中,按钮的设置如下: enter image description here

奇怪的是,如果我点击中间的箭头< ------>为了使宽度拉伸,标题文本停止工作,它们都显示'播放'???

2 个答案:

答案 0 :(得分:3)

尝试使用

设置按钮的文字

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

而不是

playButton.titleLabel.text = @"Invite Me;

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

答案 1 :(得分:0)

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

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

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