您好,我正在开发聊天应用程序,用户可以在其中向其他用户发送笑脸(表情符号)。对于文本,它的工作完美,但当它包含表情符号时,它是正确的。我已经为此使用了方法
- (CGSize)getSizeForTextNSString *)text maxWidthCGFloat)width fontNSString *)fontName fontSizefloat)fontSize {
CGSize constraintSize;
constraintSize.height = MAXFLOAT;
constraintSize.width = width;
NSDictionary *attributesDictionary = [NSDictionary dictionaryWithObjectsAndKeys:
[UIFont fontWithName:fontName size:fontSize], NSFontAttributeName,
nil];
CGRect frame = [text boundingRectWithSize:constraintSize
optionsNSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading)
attributes:attributesDictionary
context:nil];
CGSize stringSize = frame.size;
return stringSize;
}
结果类似于
从图片中你可以看到我想说什么以及我需要什么。当 UILabel 中有表情符号文本时,我需要在两行之间添加一些内容。任何帮助将不胜感激。提前致谢。
编辑:我已经给出了答案。但是,如果有人对此有一些快速的技巧,那对我来说会很棒。
Best Answer-推荐答案 strong>
我已经完成了一项很好的手动操作,现在看起来对我来说很好。我为标签文本添加了行距,它对我很有用。我设置了像 这样的文本
NSMutableAttributedString* attrString = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat"%@",message_text]];
NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];
[style setLineSpacing:4];
[attrString addAttribute:NSParagraphStyleAttributeName
value:style
range:NSMakeRange(0, [message_text length])];
lblChatMSG.attributedText = attrString;
我获取文本高度的方法是
- (CGSize)getSizeForTextNSString *)text maxWidthCGFloat)width fontNSString *)fontName fontSizefloat)fontSize {
CGSize constraintSize;
constraintSize.height = MAXFLOAT;
constraintSize.width = width;
NSMutableParagraphStyle * paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;
paragraphStyle.alignment = NSTextAlignmentLeft;
paragraphStyle.lineSpacing = 4;
NSDictionary *attributesDictionary = [NSDictionary dictionaryWithObjectsAndKeys:
[UIFont fontWithName:fontName size:fontSize], NSFontAttributeName,paragraphStyle,NSParagraphStyleAttributeName,
nil];
CGRect frame = [text boundingRectWithSize:constraintSize
optionsNSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading)
attributes:attributesDictionary
context:nil];
CGSize stringSize = frame.size;
return stringSize;
}
结果是
关于ios - emoji 在 iOS 的 UILabel 中被剪辑,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/33821006/
|