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。
我有一个 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。