2 行文本 UIButton

2 line text UIButton

我有一个 UIButton,按钮的文本由随机发生器填充。 但是我的问题是有时文本中的字符数太多,导致按钮现在显示整个文本。

是否可以检查字符是否过多,然后将其余文本放到另一行文本中?所以基本上必须为 UIButton 添加文本行而不是一行?

假设您使用的是故事板或 .xib 文件,请单击您的按钮并打开右侧的属性检查器,然后在“按钮”部分中查找 'Line Break' 字段。将其下拉,您将看到 2 个选项(以及其他选项)- 'Character wrap' 和 'Word wrap',它们提供了您想要的功能。

或者在代码中您可以使用以下之一

[BUTTON setLineBreakMode:NSLineBreakByWordWrapping]
[BUTTON setLineBreakMode:NSLineBreakByCharWrapping]

Objectivc-C

button.titleLabel.lineBreakMode = NSLineBreakByWordWrapping;
button.titleLabel.numberOfLines = 2;
button.titleLabel.textAlignment = NSTextAlignmentCenter; // if u need

否则使用这个

button.titleLabel.lineBreakMode = NSLineBreakByWordWrapping;
button.titleLabel.textAlignment = NSTextAlignmentCenter;
[button setTitle: @"Line1\nLine2" forState: UIControlStateNormal];

Swift

button.titleLabel!.lineBreakMode = .ByWordWrapping
button.titleLabel!.numberOfLines = 2
button.titleLabel!.textAlignment = .Center

否则使用这个

button.titleLabel!.lineBreakMode = .ByWordWrapping
button.titleLabel!.textAlignment = .Center
button.setTitle("Line1\nLine2", forState: .Normal)

Swift3

buttonName.titleLabel!.lineBreakMode = .byWordWrapping
buttonName.titleLabel!.textAlignment = .center
buttonName.setTitle("Line1\nLine2", for: .normal)

当使用自动布局而不是自动换行时,我遇到了 UILabels 增长的问题。解决方案是设置 preferredMaxLayoutWidth 以强制它包装文本。

对于按钮,您可以使用以下方法做同样的事情:

button.titleLabel.preferredMaxLayoutWidth = <max width required>.

在 Interface Builder 中,将 UIButton 控件的 Line Break 模式更改为 Word Wrap

为了使文本居中,将标题设为 Attributed 而不是 Plain。