当前位置:  开发笔记 > 编程语言 > 正文

如何将多行文本添加到UIButton?

如何解决《如何将多行文本添加到UIButton?》经验,为你挑选了10个好方法。

我有以下代码......

UILabel *buttonLabel = [[UILabel alloc] initWithFrame:targetButton.bounds];
buttonLabel.text = @"Long text string";
[targetButton addSubview:buttonLabel];
[targetButton bringSubviewToFront:buttonLabel];

...我的想法是我可以为按钮添加多行文本,但文本总是被UIButton的backgroundImage遮盖.用于显示按钮子视图的日志记录调用显示已添加UILabel,但无法看到文本本身.这是UIButton中的错误还是我做错了什么?



1> jessecurry..:

对于iOS 6及更高版本,请使用以下内容以允许多行:

button.titleLabel.lineBreakMode = NSLineBreakByWordWrapping;
// you probably want to center it
button.titleLabel.textAlignment = NSTextAlignmentCenter; // if you want to 
[button setTitle: @"Line1\nLine2" forState: UIControlStateNormal];

对于iOS 5及更低版本,请使用以下内容以允许多行:

button.titleLabel.lineBreakMode = UILineBreakModeWordWrap;
// you probably want to center it
button.titleLabel.textAlignment = UITextAlignmentCenter;
[button setTitle: @"Line1\nLine2" forState: UIControlStateNormal];

2017年,iOS9前锋,

通常,只做这两件事:

    选择"归属文本"

    在"Line Break"弹出窗口中选择"Word Wrap"


实际上,只需添加button.titleLabel.numberOfLines = 0; 这将使线条无限制.并且button.titleLabel.textAlignment = NSTextAlignmentLeft; 如果您想要左对齐文本,则默认情况下标题居中.
请注意,这些作业在iOS 6中已弃用.请参阅@NiKKi下面的答案以获取更新的语法.
只是让人们知道:如果您使用NSAttributedString,这不起作用
在swift`button.titleLabel?.lineBreakMode = NSLineBreakMode.ByWordWrapping`

2> Adam Waite..:

所选答案是正确的但如果您更喜欢在Interface Builder中执行此类操作,则可以执行以下操作:

PIC


感谢我24岁的自己写这个答案,来自28岁的自我.
为了只使用Interface Builder,必须在“用户定义的运行时属性”中将“ Number”值的“ titleLabel.textAlignment”设置为“ 1”,以使文本居中

3> 小智..:

如果要添加标题以多行为中心的按钮,请为按钮设置Interface Builder的设置:

[这里]


实际上,这是这个帖子中最好的答案.立即工作,并显示来自IB的居中文本.谢谢!

4> NiKKi..:

对于IOS 6:

button.titleLabel.lineBreakMode = NSLineBreakByWordWrapping;
button.titleLabel.textAlignment = NSTextAlignmentCenter;

UILineBreakModeWordWrap and UITextAlignmentCenter

在IOS 6开始时已弃用..



5> baudot..:

重申Roger Nolan的建议,但使用明确的代码,这是一般解决方案:

button.titleLabel?.numberOfLines = 0



6> Md. Ibrahim ..:
SWIFT 3
button.titleLabel?.lineBreakMode = .byWordWrapping
button.titleLabel?.textAlignment = .center  
button.setTitle("Button\nTitle",for: .normal)



7> Valerii Hior..:

有一个更简单的方法:

someButton.lineBreakMode = UILineBreakModeWordWrap;

(针对iOS 3及更高版本编辑:)

someButton.titleLabel.lineBreakMode = UILineBreakModeWordWrap;


UIButton.lineBreakMode在3.0中已弃用,因此不再是一个不错的选择.
不建议将lineBreakMode用作UIButton的直接属性。我们被定向为“改为使用titleLabel的lineBreakMode属性。” 我相应地编辑了Valerii的答案。仍然是一个不错的选择。

8> neoneye..:

使用autolayout在iOS7上左对齐:

button.titleLabel.lineBreakMode = NSLineBreakByWordWrapping;
button.titleLabel.textAlignment = NSTextAlignmentLeft;
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;



9> Nazrul Islam..:

在Xcode 9.3中,你可以使用如下的故事板,

在此输入图像描述

您需要将按钮标题textAlignment设置为居中

button.titleLabel?.textAlignment = .center

您不需要使用新行(\n)设置标题文本,如下所示,

button.setTitle("Good\nAnswer",for: .normal)

只需设置标题,

button.setTitle("Good Answer",for: .normal)

这是结果,

在此输入图像描述



10> Rog..:

首先,你应该知道UIButton里面已经有了UILabel.您可以使用它进行设置–setTitle:forState:.

您的示例的问题是您需要将UILabel的numberOfLines属性设置为默认值1以外的值.您还应该查看lineBreakMode属性.

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有