ios - Wordwrap 与换行 UIButton 拉伸(stretch)

标签 ios iphone uibutton line-breaks word-wrap

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

enter image description here

但是当我没有 \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];

enter image description here

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

结果:

demo

关于ios - Wordwrap 与换行 UIButton 拉伸(stretch),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33522032/

相关文章:

ios - Swift 与核心数据

ios - 在iOS中使用背景图片时,需要删除UITableView中单元格之间的边框

ios - 标签栏导航应用程序中的按钮编程

ios - 如何在 TableView 单元格中添加自定义 UIButton?

ios - 问 : UITests - How to get collectionCell element inside collectionView nested with TableView cell?

java - Openfire 插件 servlet

iphone - iPhone 开发环境中的 MVC

iphone - 如何调整 UISwitch 按钮的大小?

ios - 当应用程序返回前台时读取最新的推送通知数据(不是通过点击通知)

ios - UITableViewCell 中的圆形按钮