2 行文本 UIButton

Posted

技术标签:

【中文标题】2 行文本 UIButton【英文标题】:2 line text UIButton 【发布时间】:2015-03-26 14:15:48 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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];

斯威夫特

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)

【讨论】:

如果您需要超过 2 行,请使用 numberOfLines = 0,祝您有美好的一天【参考方案2】:

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

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

【讨论】:

【参考方案3】:

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

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

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

【讨论】:

【参考方案4】:

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

对于按钮,您可以使用以下方法执行相同的操作:

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

【讨论】:

以上是关于2 行文本 UIButton的主要内容,如果未能解决你的问题,请参考以下文章

如何使 Toast 中的 2 行文本彼此居中?

在一个功能中添加 2 个逐行文本阅读器

How-to:绘制换行文本的两种方法

IOS:UITextView 旋转 iOS 7 换行文本

判断图像中有多少行文本(开发中)

在 Xcode 中输入时,当前行文本字体大小会增加