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

iOS 16.4+下NSAttributedString负baselineOffset值被忽略问题咨询

iOS 16.4中NSAttributedString的baselineOffset异常问题

在针对iOS 16.4版本开发时,我们发现NSAttributedString的baselineOffset属性行为出现了明显变化:

  • 正偏移值的处理逻辑较旧版本改变(无需再除以2),该问题已有相关讨论;
  • 负偏移值存在两处异常:
    • 单独在NSAttributedString中使用时可正常生效,但会导致UILabel的尺寸增大;
    • 搭配NSParagraphStyle的maximumLineHeight和minimumLineHeight属性时,负偏移值会被完全忽略。

复现代码

let label1 = UILabel()
let label2 = UILabel()
let label3 = UILabel()

self.view.addSubview(label1)
self.view.addSubview(label2)
self.view.addSubview(label3)

let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.minimumLineHeight = 20
paragraphStyle.maximumLineHeight = 20

let attr1: [NSAttributedString.Key: Any] = [
    .paragraphStyle: paragraphStyle,
    .baselineOffset: 0]
let attr2: [NSAttributedString.Key: Any] = [
    .paragraphStyle: paragraphStyle,
    .baselineOffset: 5]
let attr3: [NSAttributedString.Key: Any] = [
    .paragraphStyle: paragraphStyle,
    .baselineOffset: -5]

let str1 = NSAttributedString(string: "0 offset", attributes: attr1)
let str2 = NSAttributedString(string: "5 offset", attributes: attr2)
let str3 = NSAttributedString(string: "-5 offset", attributes: attr3)

版本对比表现

对比iOS 16.4(左)与iOS 16.2(右)模拟器的效果:

  • 旧版本(iOS 16.2)中,正偏移值会被莫名放大一倍;
  • iOS 16.4中,正偏移表现正常,但设置固定行高后,负偏移被完全忽略。

iOS 16.4 vs iOS 16.2对比

内容的提问来源于stack exchange,提问作者Elie Hage

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 01:07:28