我有一个UILabel
,它显示的表情符号不正确。
这是Android应用程序的屏幕截图,该屏幕截图正确显示了与表情符号相同的文本。
我尝试了here的答案,但没有帮助。
示例字符串:"تم البيع والله يبارك للمشتري♥️"
代码如下:
NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithString:comment.body];
UIFont *cellFont = [UIFont preferredFontForTextStyle:UIFontTextStyleSubheadline];
NSDictionary *attributesDictionary;
NSMutableParagraphStyle *paragraphStyle =
[[NSMutableParagraphStyle alloc] init];
paragraphStyle.lineSpacing = 10;
paragraphStyle.alignment = NSTextAlignmentRight;
paragraphStyle.allowsDefaultTighteningForTruncation = true;
attributesDictionary = @{
NSParagraphStyleAttributeName : paragraphStyle,
NSFontAttributeName : cellFont,
NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType,
NSCharacterEncodingDocumentAttribute: @(NSUTF8StringEncoding)
};
[str addAttributes:attributesDictionary
range:NSMakeRange(0, str.length)];
cell.commentTextLabel.attributedText = str;
任何帮助将不胜感激。
答案 0 :(得分:0)
使用表情符号的unicode。 在您的情况下,红色心脏的unicode是:U + 2764 U + FE0F。
目标C代码:
cell.commentTextLabel.text = @"تم البيع والله يبارك للمشتري \U00002764 \U0000FE0F";
快捷代码:
cell.commentTextLabel.text = "تم البيع والله يبارك للمشتري \u{2764} \u{FE0F}"
有关更多表情符号,请在Xcode中转到编辑-> 表情符号和符号,选择一个表情符号,然后右键单击它,然后单击复制字符信息 >按钮。粘贴它,您将获得红色的心:
❤️
red heart
Unicode: U+2764 U+FE0F, UTF-8: E2 9D A4 EF B8 8F
答案 1 :(得分:0)
我可以通过使用以下代码解决此问题:
NSData *data = [comment.body dataUsingEncoding:NSUTF16StringEncoding allowLossyConversion:false];
NSMutableAttributedString *str = [[NSMutableAttributedString alloc ] initWithData:data options:@{NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType} documentAttributes:nil error:nil];
UIFont *cellFont = [UIFont preferredFontForTextStyle:UIFontTextStyleSubheadline];
NSDictionary *attributesDictionary;
NSMutableParagraphStyle *paragraphStyle =
[[NSMutableParagraphStyle alloc] init];
paragraphStyle.lineSpacing = 10;
paragraphStyle.alignment = NSTextAlignmentRight;
attributesDictionary = @{
NSParagraphStyleAttributeName : paragraphStyle,
NSFontAttributeName : cellFont
};
[str addAttributes:attributesDictionary range:NSMakeRange(0, str.length)];
cell.commentTextLabel.attributedText = str;
在这里comment.body
是从服务器获取的包含表情符号的字符串。
结果是这样的:
感谢Larme在评论中的帮助。