【问题标题】:UIButton with Linebreak and Autolayout带有换行和自动布局的 UIButton
【发布时间】:2015-04-23 17:59:58
【问题描述】:

我有一个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"];}

【问题讨论】:

  • 请显示按钮的实际代码。它在哪里运行,按钮是如何创建/配置的,如何设置按钮标签文本等等。
  • 我已经用实际代码编辑了我的问题。请注意,我创建了一个新项目只是为了测试我正在开发的应用程序的此功能。
  • "请注意,我创建了一个新项目只是为了测试此功能" 太好了!我希望每个人都这样做。这是解决这些问题的最佳方法。
  • 我仍在学习用 Objective-C 编写代码,但我认为在新项目中这样做会更容易,以避免与当前应用程序混淆,最坏的情况下会弄乱一些应用中的原始代码。

标签: ios uibutton autolayout line-breaks


【解决方案1】:

只需将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];

【讨论】:

    猜你喜欢
    • 2014-07-13
    • 1970-01-01
    • 2014-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    • 2017-07-18
    • 2015-09-01
    相关资源
    最近更新 更多