美文网首页程序员
关于OC中计算文字高度

关于OC中计算文字高度

作者: 忠橙_g | 来源:发表于2016-12-22 12:03 被阅读124次

OC中计算文本高度的方法有以下几种:

1.利用NSString的sizeWithFont:constrainedToSize:lineBreakMode:计算

(该方法在iOS7.0以上已经废弃),代码如下:

size = [text sizeWithFont:[UIFontsystemFontOfSize:fontSize] constrainedToSize:CGSizeMake(maxWidth,MAXFLOAT) lineBreakMode:NSLineBreakByCharWrapping];//折行方式

2.利用NSString的boundingRectWithSize:options:attributes:context:计算

该方法为iOS7.0以上新增方法,代码如下:

CGSize textSize;
NSStringDrawingOptions option = NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading;
//NSStringDrawingTruncatesLastVisibleLine如果文本内容超出指定的矩形限制,文本将被截去并在最后一个字符后加上省略号。 如果指定了NSStringDrawingUsesLineFragmentOrigin选项,则该选项被忽略 NSStringDrawingUsesFontLeading计算行高时使用行间距。(注:字体大小+行间距=行高)
NSDictionary *attributes = [NSDictionary dictionaryWithObject:font forKey:NSFontAttributeName];
CGRect rect = [self boundingRectWithSize:size
                                 options:option
                              attributes:attributes
                                 context:nil];
//经测试,向上取整可以减少误差
textSize.height = ceilf(rect.size.height);
textSize.width = ceilf(rect.size.width);

由于我现在的项目只需要适配8以上的,所以就封装了一个扩展,方便调用,地址如下:
NSString+Size

参考文章:
http://blog.csdn.net/hanhailong726188/article/details/42327725
http://blog.csdn.net/jymn_chen/article/details/10949279
http://blog.csdn.net/hello_hwc/article/details/46731991

相关文章

网友评论

    本文标题:关于OC中计算文字高度

    本文链接:https://www.haomeiwen.com/subject/jxitvttx.html