我有一个UIButton
我需要能够将其标签设置为任何文本,因此它需要垂直拉伸(stretch)。
使用 \n
设置文本时UIButton 正确扩展的字符:
self.myButton.titleLabel.textAlignment = NSTextAlignmentCenter;
self.myButton.titleLabel.lineBreakMode = NSLineBreakByWordWrapping;
self.myButton.titleLabel.numberOfLines = 0;
[self.myButton setTitle:@"Lorem ipsum dolor sit amet, consectetuer \nadipiscing elit, sed diam nonummy nibh \neuismod tincidunt ut laoreet dolore \nmagna aliquam erat volutpat. \nUt wisi enim ad minim veniam, \nquis nostrud exerci tation ullamcorper \nsuscipit lobortis nisl ut aliquip ex \nea commodo consequat." forState:UIControlStateNormal];
但是当我没有 \n
时相反,让标签根据内容自行换行,这些行似乎对 UIButton
并不重要高度
self.myButton.titleLabel.textAlignment = NSTextAlignmentCenter;
self.myButton.titleLabel.lineBreakMode = NSLineBreakByWordWrapping;
self.myButton.titleLabel.numberOfLines = 0;
[self.myButton setTitle:@"Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat." forState:UIControlStateNormal];
UIButton
上有配置吗或其 UILabel
控制此行为还是这是一个 iOS 错误? (在iOS 9.1上运行)
注意:我对每次文本更改时手动重新计算 UIButton 的框架大小并不感兴趣,我想知道如果 UIButton 上有自动布局约束或配置属性以获得正确的行为
最佳答案
您需要创建一个 UIButton
的子类,在其中重写 intrinsicContentSize
:
@implementation HeightExpandingButton
- (CGSize)intrinsicContentSize {
CGFloat width = self.bounds.size.width;
CGSize labelSize = [self.titleLabel sizeThatFits:CGSizeMake(width, 100000)];
labelSize.width = width;
return labelSize;
}
@end
结果:
关于ios - Wordwrap 与换行 UIButton 拉伸(stretch),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33522032/