有很多链接如何调整标签的大小,但是缺乏如何根据标签大小调整 UIButton 大小的信息。目前,我设置了自动布局的屏幕视图(所有系统约束都是从 IB 添加的),一切正常,但需要在屏幕底部添加动态内容。我需要创建和添加具有随机长度标题的随机数量的按钮。因此,这里是创建和添加按钮的代码片段:
// Loop
UIButton *myButton = [UIButton new];
UIButton.frame = CGRectMake(0, previousButtonOriginY, self.view.bounds.size.width, 20);
myButton.titleLabel.lineBreakMode = NSLineBreakByWordWrapping;
myButton.titleLabel.textAlignment = NSTextAlignmentLeft;
myButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
[myButton setTitle:@"very long title..." forState:UIControlStateNormal];
myButton.titleLabel.numberOfLines = 0;
[self.footerView addSubview:myButton];
问题是按钮的框架高度保持 20 像素,但标签字符串显示在三行上,因此与另一个按钮标题重叠。如果我添加 [myButton sizeToFit] 则按钮宽度会调整大小以将所有文本放入一行,因此标题超出屏幕。
如果我添加 [myButton sizeThatFits:CGSizeMake(320, 100)] 那么调整大小根本不起作用。我知道 sizeToFit 根本不应该被调用,因为它不是自动布局的一部分,但是需要关于如何轻松地将按钮使其标签适合屏幕 320 宽度的建议。
我觉得我需要从代码中添加系统约束,但之前没有这样做过,所以不确定它应该是什么样子。我可能需要从代码中添加大量约束才能使这个简单的事情正常工作:)