You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS 15中使用UIButton Configuration时title的lineBreakMode不生效如何解决?

解决iOS 15 UIButton.Configuration下标题截断/字体缩放失效问题

在iOS 15及以后使用UIButton.Configuration时,直接修改titleLabel的属性不再生效,需要通过配置对象本身来设置相关属性,以下是具体解决方案:

设置标题截断模式(lineBreakMode)

有两种常用方式可以实现标题截断:

  1. 直接配置titleLineBreakMode属性
    这是最简便的方式,适用于不需要自定义富文本的场景:
// 创建或获取按钮的配置对象
var config = UIButton.Configuration.filled() // 根据需求选择配置类型,如plain、gray等
config.titleLineBreakMode = .byTruncatingTail
// 将配置赋值给按钮
button.configuration = config
  1. 通过富文本(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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 20:54:22