Pav*_*eev 8 nsattributedstring uilabel ios
有没有办法判断UILabel是否使用label.attributedText或label.text属性设置了文本?
问题是当你设置时attributedText,text也会更新,反之亦然,因此无法检查nil的这些属性.
受@lukas-o 的启发,我写了一个扩展UILabel来确定它是否包含一个attributedText。事实上,如果NSAttributedString不包含任何属性,则此计算属性会将其评估为没有属性。
extension UILabel {
var isAttributed: Bool {
guard let attributedText = attributedText else { return false }
let range = NSMakeRange(0, attributedText.length)
var allAttributes = [Dictionary<String, Any>]()
attributedText.enumerateAttributes(in: range, options: []) { attributes, _, _ in
allAttributes.append(attributes)
}
return allAttributes.count > 1
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我用的。如果范围长度等于未归属文本长度,则该文本仅具有单个属性,因此未归属。
NSRange range;
[label.attributedText attributesAtIndex:0 effectiveRange:&range];
BOOL isAttributed = label.text.length==range.length;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2596 次 |
| 最近记录: |