UIButton自动换行在输入文字时不起作用?

时间:2018-05-20 19:38:16

标签: ios swift uibutton

我有一个UIButton,它是另一个页面的简单信号。

我已将Title设置为归属,然后选择自动换行。这很好用,第二个词包含到下一行。

然而,这一切都是合理的。当我选择" Align Center" (使用"标题"下面的按钮,自动换行不再有效,只需运行....所以你无法全部看到。(例如"下一个pa&#34 ;而不是"下一页")

我在这里遗漏了什么吗?这似乎是一件微不足道的事情!这里有一个旧的答案can't get word wrap to work on UIButton,但它既旧又使用代码 - 如果你想将它自动换行为2行,你肯定不需要代码来使按钮文本居中!?

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

结果:

enter image description here

  

如果你想将它包装成2行,你肯定不需要代码来使按钮文本居中!?

不要居中,不;您可以在故事板中设置居中。因此,您可以消除第一批代码并在故事板中对其进行配置。但是必须使用代码将标题标签转换为多行标签:

    self.button.titleLabel?.numberOfLines = 0

在故事板中无法做到这一点,因为你无法访问那里的标题标签。

答案 1 :(得分:0)

我一直在玩这个,我发现如果你把它设置为“角色包裹”,它就会起作用。而不是“自动换行”。一旦你选择了中心对齐。

如果有人有更好的解决方案,请添加它,因为我猜这可能会有问题,如果您在使用不同屏幕尺寸等自动布局时稍微改变宽度等,如果您希望它适应其宽度,那么这可能不是最好的解决方案,但它确实有效