当我尝试使用具有 unicode 文本的此函数时,它会根据字体大小返回错误的高度作为其计算高度,但与没有 unicode 的情况相比,表情符号会变得更大并且占用更多的高度。
[文本 sizeWithFont:[UIFont systemFontOfSize:12.0] constrainedToSize:CGSizeMake(233.0f, 999.0f) lineBreakMode:UILineBreakModeWordWrap];
可以计算字符串中包含 unicode 的真实高度吗?
看看 CoreText 框架。
您可以尝试以下方法:
CTFrameSetterRef framesetter = CTFramesetterCreateWithAttributedString(myAttributedString);
CGSize size = CTFramesetterSuggestFrameSizeWithConstraints(frame setter, CFRangeMake(0, stringLength), NULL, CGSizeMake(maxWidth, maxHeight), NULL);
这应该为您提供正确的尺寸。您当然可以使 maxHeight 任意大,以确保字符串适合最大大小。或者您可以将指向 CFRange 的指针作为最后一个参数传递,它会将其设置为能够适合您传递的最大大小的字符串范围。
希望这对你有用:)