带有换行和自动布局的 UIButton

UIButton with Linebreak and Autolayout

我有一个 UIButton,我在应用程序中设置了它的文本,但是文本太长所以我想让 UIButton 文本换行并继续下一个行。

而且它必须与 AutoLayout 一起使用。

我已经通过 UILabel 和以下代码成功做到了这一点:

label.numberOfLines = 0;
label.preferredMaxLayoutWidth = 300.0;

然而,当我将它应用到这样的按钮时:

button.titleLabel.preferredMaxLayoutWidth = 200.0;
button.titleLabel.numberOfLines = 0;

好像不行。

该代码放在 viewDidLoad 中,如下所示:

- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
label.numberOfLines = 0;
label.preferredMaxLayoutWidth = 300.0;

button.titleLabel.preferredMaxLayoutWidth = 200.0;
button.titleLabel.numberOfLines = 0; }

然后我像这样使用 IBAction 设置按钮文本

-(IBAction)labelMake:(id)sender {

label.text = [NSString stringWithFormat: @"Test to see if label linebreaks"];

button.titleLabel.text = [NSString stringWithFormat: @"Test to see if button text linebreaks"];}

只需将 UIButton 设置为:

button.titleLabel.numberOfLines = 0;
button.titleLabel.lineBreakMode = NSLineBreakByWordWrapping;

并将文本设置为:

[button setTitle:@"This is a long text \nspanning multiple lines\nAnd there would be A LOT MORE" forState:UIControlStateNormal];