ios - 带有表情符号的属性字符串 - 适当的高度

标签 ios nsstring uilabel nsattributedstring emoji

我正在尝试获取属性字符串的高度。这按预期工作:

[attrString boundingRectWithSize:size
                         options:(NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingTruncatesLastVisibleLine)
                         context:NULL]

...除非字符串包含表情符号。使用表情符号时,字符串会在标签底部被截断。我需要做什么特别的事情吗?

最佳答案

我知道这是一篇旧文章,但有人可能仍然觉得它有用,您可以转到核心文本,让它为您完成艰苦的工作!

static inline CGSize OKASizeWithAttributedString(NSAttributedString *attributedString, CGFloat width) {

  CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString((__bridge CFAttributedStringRef)attributedString);
  CGSize targetSize = CGSizeMake(width, CGFLOAT_MAX);
  CGSize size = CTFramesetterSuggestFrameSizeWithConstraints(framesetter, CFRangeMake(0, (CFIndex)[attributedString length]), NULL, targetSize, NULL);
  CFRelease(framesetter);

  return size;
}

关于ios - 带有表情符号的属性字符串 - 适当的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19732585/

相关文章:

iphone - 如何更改导航栏标题的前颜色

ios - 使 NSDate 等于 NSString

iphone - 如何在 Objective C 中验证空字符串?

iphone - 在NSString中替换'\'

ios - 关闭 Modal Segue 后更新 UIViewController

ios - Swift 和 UILabel - fatal error : unexpectedly found nil while unwrapping an Optional value

ios - CALayer 上的绘制文本在运行时不显示或崩溃

ios - 如何将 JSON 对象数组从 Meteor Collection API 转换为 iOS 对象?

ios - 在模拟器中安装了来自 github 的控件 - 现在它随每个应用程序一起启动

objective-c - Objective C 中的 __NSSingleObjectArrayI 是什么意思?当我尝试阅读 Json