WKInterfaceLabel 属性字符串在宽度上失败

Posted

技术标签:

【中文标题】WKInterfaceLabel 属性字符串在宽度上失败【英文标题】:WKInterfaceLabel Attributed String Fails on Width 【发布时间】:2017-06-30 05:13:52 【问题描述】:

我正在使用属性字符串来删除WKInterfaceLabel 中的文本。这一直有效,直到文本长于手表的宽度,因此您会看到... 实际上同样的事情发生在 ios 上;但是,您可以剪辑解决问题的内容。在手表上,剪辑不可用。

当总宽度超出屏幕边界时,如何删除可见文本?下面是代码:

let attributedString = NSMutableAttributedString(string: self.fileTextArray[i])
attributedString.addAttribute(NSStrikethroughStyleAttributeName, value: NSNumber(value: NSUnderlineStyle.styleThick.rawValue), range: NSMakeRange(0, attributedString.length))
attributedString.addAttribute(NSStrikethroughColorAttributeName, value: UIColor.red, range: NSMakeRange(0, attributedString.length))

row.translatedTextLabel.setAttributedText(attributedString)

【问题讨论】:

【参考方案1】:

这似乎是一个错误,但有一个解决方法。解决方法是使用以下代码行:

attributedString.addAttribute(NSBaselineOffsetAttributeName, value: 0, range: NSMakeRange(0, attributedString.length))

这在 Watch OS 和 iOS 中都可以解决。

更多细节在这里:iOS 10.3: NSStrikethroughStyleAttributeName is not rendered if applied to a sub range of NSMutableAttributedString

【讨论】:

以上是关于WKInterfaceLabel 属性字符串在宽度上失败的主要内容,如果未能解决你的问题,请参考以下文章

WKInterfaceLabel 未在 WKInterfaceController 中更新 - Swift Apple watch dev

WatchKit 为标签添加边距

iWatch开发:UI 组件说明

字符串宽度_01

Android_TextView属性XML详解

使用Excel VBA调整列表框以显示比列表框宽度更长的字符串