iOS 15中使用UIButton Configuration时title的lineBreakMode不生效如何解决?
在iOS 15及以后使用UIButton.Configuration时,直接修改titleLabel的属性不再生效,需要通过配置对象本身来设置相关属性,以下是具体解决方案:
设置标题截断模式(lineBreakMode)
有两种常用方式可以实现标题截断:
- 直接配置
titleLineBreakMode属性
这是最简便的方式,适用于不需要自定义富文本的场景:
// 创建或获取按钮的配置对象 var config = UIButton.Configuration.filled() // 根据需求选择配置类型,如plain、gray等 config.titleLineBreakMode = .byTruncatingTail // 将配置赋值给按钮 button.configuration = config
- 通过富文本(AttributedString)设置
如果需要同时设置其他文本样式,可以用这种方式:
// 创建带截断属性的富文本 let title = "需要设置截断的按钮标题" var attrContainer = AttributeContainer() attrContainer.lineBreakMode = .byTruncatingTail let attributedTitle = AttributedString(title, attributes: attrContainer) // 配置按钮 var config = UIButton.Configuration.filled() config.attributedTitle = attributedTitle button.configuration = config
设置标题字体自动缩放(adjustsFontSizeToFitWidth & minimumScaleFactor)
需要将缩放相关属性添加到配置的文本属性中,示例代码如下:
var config = UIButton.Configuration.filled() // 配置字体缩放属性 config.titleTextAttributes[.adjustsFontSizeToFitWidth] = true config.titleTextAttributes[.minimumScaleFactor] = 0.5 // 如果需要指定字体,可同时设置 config.titleTextAttributes[.font] = UIFont.systemFont(ofSize: 16) button.configuration = config
注意事项
UIButton.Configuration是值类型,每次修改配置后都需要重新赋值给按钮的configuration属性,直接修改已赋值的配置不会生效。
内容的提问来源于stack exchange,提问作者stephen
相关产品推荐
相关产品推荐

