UIButton setAttributedTitle自动布局问题

时间:2015-06-16 09:15:38

标签: ios uibutton autolayout nsautolayout

我使用属性字符串为我的按钮设置标题,并且它不会根据文本(符号)长度拉伸按钮的宽度。如果我使用普通标题[button setTitle:.....],它的工作完美,按钮的宽度等于文本。所以我可以看到所有的字母。

我使用font awesome从字体中抓取图像并将其设置为属性字符串。

FAKFontAwesome *userIcon = [FAKFontAwesome userIconWithSize:16];
[userIcon addAttribute:NSForegroundColorAttributeName value:[UIColor whiteColor]];

UIFont *font = [PFFont boldFontOfMediumSize];

NSAttributedString *connectString =
[[NSAttributedString alloc]
initWithString:NSLocalizedString(@"Connect", @"")
    attributes:@{NSFontAttributeName:font,
    NSForegroundColorAttributeName:[UIColor whiteColor]}];

NSAttributedString *user = [userIcon attributedString];
NSAttributedString *combined = [NSAttributedString attributedStringWithFormat:@"%@ %@", user, connectString];

[self.button setAttributedTitle:combined forState:UIControlStateNormal];

在这种情况下,按钮要根据给定的字符串正确拉伸。

我以编程方式设置约束,并且我对宽度没有任何限制,因此宽度应根据我想的内容自动调整大小,并且适用于通常的字符串但不适用于属性。

2 个答案:

答案 0 :(得分:0)

  1. 在故事板中选择您的按钮。
  2. 转到编辑
  3. 选择“适合内容的尺寸”
  4. enter image description here

答案 1 :(得分:0)

我在格式字符串尾部添加了一个空格,解决了该问题。你可以试试看!

  NSAttributedString *combined = [NSAttributedString attributedStringWithFormat:@"%@ %@ ", user, connectString];
  [self.button setAttributedTitle:combined forState:UIControlStateNormal];