boundingRectWithSize for NSAttributedString returning wrong size

原创 2015年07月07日 10:18:10

https://stackoverflow.com/questions/13621084/boundingrectwithsize-for-nsattributedstring-returning-wrong-size

有个哥们儿的coretext方法非常好,解决了我的这个问题

@warrenm :

That method seems buggy in numerous ways. For one, as you note, it doesn't respect width constraints. For another, I've seen it crash because it seems to assume that all attributes are of NSObject type (for example, it tried to pass _isDefaultFace to a CTFontRef). It will also crash sometimes when a string drawing context is provided because it tries to add a nil-valued attribute to a mutable attributed string behind the scenes.

I would encourage you to avoid this method entirely. You can use Core Text directly to estimate the string size, if you can handle the overhead of creating a framesetter for each string you need to draw. It doesn't precisely honor width constraints either, but it seems to get within a few pixels, in my experience.

CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString((__bridge CFAttributedStringRef)attrString);
CGSize targetSize = CGSizeMake(320, CGFLOAT_MAX);
CGSize fitSize = CTFramesetterSuggestFrameSizeWithConstraints(framesetter, CFRangeMake(0, [attrString length]), NULL, targetSize, NULL);
CFRelease(framesetter);



学习boundingRectWithSize:options:attributes:context:计算文本尺寸

oundingRectWithSize:options:context:  返回文本绘制所占据的矩形空间。 - (CGRect)boundingRectWithSize:(CGSize)siz...
  • u013375242
  • u013375242
  • 2015年10月10日 18:02
  • 1371

使用NSAttributedString来计算行高注意事项

boundingRectWithSize方法注意事项1.此方法会忽略字符串中的\n、\r等字符,所以如果文本中含有这些转义字符,就会计算不准确2.如果options参数为NSStringDrawing...
  • fel835
  • fel835
  • 2016年07月31日 22:21
  • 868

NSAttributedString宽高计算小技巧

通常对于CoreText之类自己实现绘制的控件来说,计算富文本的宽高其实需要依赖CTFramesetterSuggestFrameSizeWithConstraints这个方法。但有些时候,我们可能只...
  • u010124617
  • u010124617
  • 2015年06月30日 15:32
  • 2482

iOS 使用 boundingRectWithSize: 计算 UILabel 高度错误的解决方案

转: http://www.jianshu.com/p/c2b8a7940d4d 在使用boundingRectWithSize: 计算 UILabel 高度,显示出来后 Label...
  • smilebigdear
  • smilebigdear
  • 2017年04月11日 15:53
  • 1706

UILabel自适应大小的新方法boundingRectWithSize:options:attributes:context:

iOS7以前我们对UILabel进行根据内容自适应大小的时候会使用方法
  • liyux4869
  • liyux4869
  • 2014年09月06日 13:35
  • 3149

ios学习--属性字符串NSAttributeString与NSString相互转换包含图片和emoji图

分享几个常用的 属性字符串NSAtrributeString 和 NSString 普通字符串的 转换方法:     一:把普通的字符串,替换为包含图片的属性字符串 plist...
  • zzzzzdddddxxxxx
  • zzzzzdddddxxxxx
  • 2016年03月29日 14:12
  • 1905

【问题】ValueError: numpy.dtype has the wrong size, try recompiling解决2

在安装pandas的时候遇到一点小问题,折腾了半天,既然解决了就和大家分享一下 当然,这个问题已经有人解决过了, http://blog.csdn.net/chloezhao/articl...
  • u014325764
  • u014325764
  • 2017年02月21日 15:49
  • 2152

IOS8.4下用- (CGRect)boundingRectWithSize: options: attributes: context:计算文本高度会崩溃的问题

这几天遇到一个计算文本高度的坑,这里记录一下。
  • u010101051
  • u010101051
  • 2016年06月01日 10:19
  • 2324

iOS方法:boundingRectWithSize:options:attributes:context:(计算文本尺寸)

原文:http://developer.apple.com/library/iOS/#documentation/uikit/reference/NSAttributedString_UIKit_Ad...
  • LG_CodeMachine
  • LG_CodeMachine
  • 2016年06月04日 19:59
  • 1921

boundingRectWithSize 的使用, 计算UILable高度, 包含Emoji及多属性string

iOS的文字高度计算一直是个问题, 苹果也一直在改, 这几天看了一下 boundingRectWithSize 方法. - (CGRect)boundingRectWithSize:(CGSiz...
  • trandy
  • trandy
  • 2015年03月26日 13:31
  • 4844
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:boundingRectWithSize for NSAttributedString returning wrong size
举报原因:
原因补充:

(最多只允许输入30个字)