• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - emoji 在 iOS 的 UILabel 中被剪辑

[复制链接]
菜鸟教程小白 发表于 2022-12-12 17:16:31 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

您好,我正在开发聊天应用程序,用户可以在其中向其他用户发送笑脸(表情符号)。对于文本,它的工作完美,但当它包含表情符号时,它是正确的。我已经为此使用了方法

- (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;
}

结果类似于 image 1 image 2 image 3

从图片中你可以看到我想说什么以及我需要什么。当 UILabel 中有表情符号文本时,我需要在两行之间添加一些内容。任何帮助将不胜感激。提前致谢。

编辑:我已经给出了答案。但是,如果有人对此有一些快速的技巧,那对我来说会很棒。



Best Answer-推荐答案


我已经完成了一项很好的手动操作,现在看起来对我来说很好。我为标签文本添加了行距,它对我很有用。我设置了像

这样的文本
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;
} 

结果是image result for emoji with good space in lines

关于ios - emoji 在 iOS 的 UILabel 中被剪辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33821006/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap