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

UIButton框架尺寸无法随系统字体增大动态更新的问题

UIButton运行时动态字体适配解决方案

针对按钮文本随系统字体缩放但框架未同步更新的问题,可通过以下方式修复:

核心修复步骤

  • 监听内容大小变化通知
    系统字体调整时会发送UIContentSizeCategory.didChangeNotification通知,给按钮添加监听以触发尺寸重新计算:

    NotificationCenter.default.addObserver(skipButton, selector: #selector(UIButton.invalidateIntrinsicContentSize), name: UIContentSizeCategory.didChangeNotification, object: nil)
    

    字体变化时,按钮会重新计算intrinsicContentSize,自动更新框架适配文本。

  • 调整内容边距
    若按钮内容边距过小,文本放大后无法撑开按钮。可通过代码或界面编辑器设置合适边距:

    skipButton.contentEdgeInsets = UIEdgeInsets(top: 8, left: 16, bottom: 8, right: 16)
    
  • 验证动态字体创建逻辑
    确保自定义字体方法返回支持动态缩放的字体。先改用系统标准方法测试:

    skipButton.titleLabel?.font = UIFont.preferredFont(forTextStyle: .body)
    skipButton.titleLabel?.adjustsFontForContentSizeCategory = true
    

    若此方法有效,说明自定义字体方法需调整,确保关联文本样式的动态特性。

  • 优化约束优先级
    你设置的宽高最小约束(48)优先级需低于按钮intrinsicContentSize的默认优先级(750)。可将最小约束优先级设为250(UILayoutPriorityDefaultLow),让按钮优先满足文本的尺寸需求。

额外检查项

  • 若用Storyboard/XIB创建按钮,需勾选Title Label的Adjusts Font For Content Size Category选项,且确保按钮依赖Auto Layout而非手动设置frame。

内容的提问来源于stack exchange,提问作者Shawn Frank

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 13:55:12