Cod*_*key 10 objective-c uilabel ios emoji
我需要计算可能是英语/表情符号/其他语言的给定文本的帧大小.
我这样做的方式是:
NSMutableParagraphStyle *style = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
[style setLineBreakMode:NSLineBreakByWordWrapping];
NSDictionary *attributes = @{NSFontAttributeName: [UIFont systemFontOfSize:fontSize], NSParagraphStyleAttributeName: style};
CGSize rect = [text boundingRectWithSize:CGSizeMake(containerWidth, CGFLOAT_MAX)
options:NSStringDrawingUsesLineFragmentOrigin| NSStringDrawingUsesFontLeading
attributes:attributes
context:nil].size;
Run Code Online (Sandbox Code Playgroud)
只要我不使用表情符号,它就可以正常工作.表情符号线高度/字体大小似乎与普通字体不同.
我看到人们尝试用不同的方式解决它,例如:http: //youbbe.xyz/issue/4987325/ios-emoji-messed-up-in-uilabel
此解决方案适用于表情符号,但不适用于英语/其他字体.
见示例图片:
如您所见,只计算文本(第一个框),但文本+表情符号未正确计算(第二个框).
我真的很惊讶这个问题没有简单的解决办法.非常感谢您的帮助.
使用 UILabel 你可以简单地说:
CGSize size = [label sizeThatFits:CGSizeMake(containerWidth, CGFLOAT_MAX)];
Run Code Online (Sandbox Code Playgroud)
你试过这个吗?我不认为表情符号有不同的行高,但它们通常占据整个行高。
您可以直接说出[label sizeToFit];然后从框架中获取尺寸(例如CGSize size = label.frame.size;)。这似乎是为不同字体大小获取正确大小的最一致准确的方法。
这里有一些代码,您可以将其复制并粘贴到游乐场中并查看不同的结果。
| 归档时间: |
|
| 查看次数: |
2366 次 |
| 最近记录: |