我有一个UIButton,它是另一个页面的简单信号。
我已将Title设置为归属,然后选择自动换行。这很好用,第二个词包含到下一行。
然而,这一切都是合理的。当我选择" Align Center" (使用"标题"下面的按钮,自动换行不再有效,只需运行....所以你无法全部看到。(例如"下一个pa&#34 ;而不是"下一页")
我在这里遗漏了什么吗?这似乎是一件微不足道的事情!这里有一个旧的答案can't get word wrap to work on UIButton,但它既旧又使用代码 - 如果你想将它自动换行为2行,你肯定不需要代码来使按钮文本居中!?
答案 0 :(得分:1)
我已将Title设置为归属,然后选择自动换行。这很好用,第二个词包含到下一行。但是,这一切都是合理的。
一旦您决定使用属性字符串,您必须使用属性字符串执行所有。因此,请为属性字符串指定一个以文本为中心的段落样式。
let para = NSMutableParagraphStyle()
para.alignment = .center
para.lineBreakMode = .byWordWrapping
let s = NSAttributedString(
string: "Hello World", attributes: [.paragraphStyle : para])
self.button.setAttributedTitle(s, for: .normal)
您还需要设置按钮的标题标签以允许多行。
self.button.titleLabel?.numberOfLines = 0
结果:
如果你想将它包装成2行,你肯定不需要代码来使按钮文本居中!?
不要居中,不;您可以在故事板中设置居中。因此,您可以消除第一批代码并在故事板中对其进行配置。但是必须使用代码将标题标签转换为多行标签:
self.button.titleLabel?.numberOfLines = 0
在故事板中无法做到这一点,因为你无法访问那里的标题标签。
答案 1 :(得分:0)
我一直在玩这个,我发现如果你把它设置为“角色包裹”,它就会起作用。而不是“自动换行”。一旦你选择了中心对齐。
如果有人有更好的解决方案,请添加它,因为我猜这可能会有问题,如果您在使用不同屏幕尺寸等自动布局时稍微改变宽度等,如果您希望它适应其宽度,那么这可能不是最好的解决方案,但它确实有效