Joj*_*dmo 5 nsattributedstring uilabel ios nsmutableattributedstring swift
我NSAttributedString在内容中使用表情符号的结尾没有被格式化.我正在尝试格式化整个字符串(在此示例中将文本颜色设置为白色,以简化),但是当放入文本时,某些文本保持未格式化UILabel.

目前,我正在使用
let attributedString = NSMutableAttributedString(string: contents)
attributedString.addAttribute(
NSForegroundColorAttributeName,
value: UIColor.white,
range: NSMakeRange(0, contents.characters.count)
)
label.attributedText = attributedString
Run Code Online (Sandbox Code Playgroud)
我也试过通过使用contents.utf8.count获得长度,但获得相同的结果.
我注意到未格式化的字符数与字符串中的表情符号数相同.这可能与正在发生的事情有关吗?
Joj*_*dmo 17
String.characters.count返回字符串中呈现的字符数.一些表情符号(例如标志和种族特定的表情符号)是两个或多个UTF字符的组合,这些字符被渲染为一个字符,以便允许更多的表情符号.
UTF代表Unicode转换格式,或简称Unicode.它允许计算机,手机,平板电脑和其他所有电子设备使用相同的标准化字符集.
实现它的人可以选择如何呈现文本,但设备使用标准化字符集进行通信非常重要.否则,向某人发送消息"Hello,World"可能会显示为"Ifmmp,Xpsme"
为了获得字符串的实际长度NSMakeRange,请使用NSAttributedString.length或Int("\(contents.endIndex)").
所以,代码应该是这样的
let attributedString = NSMutableAttributedString(string: contents)
attributedString.addAttribute(
NSForegroundColorAttributeName,
value: UIColor.white,
range: NSMakeRange(0, attributedString.length)
)
label.attributedText = attributedString
Run Code Online (Sandbox Code Playgroud)
现在,这将生成格式正确的文本

| 归档时间: |
|
| 查看次数: |
1842 次 |
| 最近记录: |