【发布时间】:2016-03-25 11:04:35
【问题描述】:
查看NSLayoutManager 的文档,特别是drawUnderlineForGlyphRange:underlineType:baselineOffset:lineFragmentRect:lineFragmentGlyphRange:containerOrigin: 方法,我注意到以下内容(强调我的):
underlineVal
绘制下划线的样式。此值是从NSUnderlineStyleAttributeName的值派生的掩码,例如 (NSUnderlinePatternDash|NSUnderlineStyleThick)。 子类可以定义自定义下划线样式。
我的问题是:这到底是怎么做的?
NSUnderlineStyle 是一个枚举,不能扩展或覆盖。您当然可以为该属性提供一个随机的原始 Int 值,枚举案例未涵盖:
self.addAttribute(NSUnderlineStyleAttributeName, value: 100022, range: lastUpdatedWordRange)
这将向布局管理器提供“无效”但可用的underlineType:
但这让人感觉不安全,而且绝对不雅。
我无法在网上找到任何示例,也无法在 Apple 文档中找到有关这些神话般的自定义下划线样式类型的进一步线索。我很想知道我是否遗漏了一些明显的东西。
【问题讨论】:
-
NSUnderlineStyle 似乎是一个糟糕的团队合作者。它的文档记录很差,而且在 Swift 中,它仍然没有被转换为选项集。在以给定样式读取标志时,它似乎不可靠(否则我做错了什么)。希望我能提供更多帮助,但我仍在研究解决方案...
标签: ios swift nsattributedstring textkit nslayoutmanager