我一直在想,是否有一种好的方式在界面构建器中制作带有多行 titleLabel
的UIButtons
? 我没有找到任何方法,并且在每个按钮上放置一个单独的UILabel
并在按下和其他事件时跟踪它的颜色不是非常直观。
如果在IB中没有这样的方法,也许在代码中有更好的替代方案?
我一直在想,是否有一种好的方式在界面构建器中制作带有多行 titleLabel
的UIButtons
? 我没有找到任何方法,并且在每个按钮上放置一个单独的UILabel
并在按下和其他事件时跟踪它的颜色不是非常直观。
如果在IB中没有这样的方法,也许在代码中有更好的替代方案?
代码:
为了允许多行,您可以使用:
button.titleLabel.lineBreakMode = UILineBreakModeWordWrap;
button.titleLabel.textAlignment = UITextAlignmentCenter;
[button setTitle: @"Line1\nLine2" forState: UIControlStateNormal];
在iOS 6中,UILineBreakModeWordWrap
和UITextAlignmentCenter
已经过时,因此请使用:
button.titleLabel.lineBreakMode = NSLineBreakByWordWrapping;
button.titleLabel.textAlignment = NSTextAlignmentCenter;
接口构建器:
您可以在界面构建器中有几种方式完成此操作。
如果您不想要自动换行,但仍然希望在UIButton上实现多行标题,可以在设置numberOfLines之前设置lineBreakMode,因为lineBreakMode似乎会取消设置的numberOfLines,因此我们按照这个顺序进行操作。
Swift:
button.titleLabel?.lineBreakMode = NSLineBreakMode.byTruncatingTail
button.titleLabel?.numberOfLines = 2
button.setTitle(myTitle, for: UIControlState.normal)