iOS文本高度的计算

之前一直以为,单行文字的高度等于font的大小,也没有细细研究,好吧,其实这种想当然的认识是极其不正确的,还是需要通过方法进行计算。

单行文本高度的计算方法

-(CGFloat)singLineTextSize{
    CGFloat height = 0;
    height = [@"这是一个单行文本。" sizeWithAttributes:@{NSFontAttributeName: [UIFont systemFontOfSize:15.0]}].height;
    return height;
}```
NSLog可以看出文本高度是17.9,跟字体大小15.0还是差的挺多的。
####多行文本高度的计算方法

NSMutableAttributedString *GetAttributedText(NSString *value) {//这里调整富文本的段落格式
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:value];
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
[paragraphStyle setLineSpacing:8.0];
// [paragraphStyle setParagraphSpacing:11]; //调整段间距
// [paragraphStyle setHeadIndent:75.0];//段落整体缩进
// [paragraphStyle setFirstLineHeadIndent:.0];//首行缩进
[attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [value length])];
return attributedString;
}

  • (CGFloat)calculateMeaasgeHeightWithText:(NSString *)string andWidth:(CGFloat)width andFont:(UIFont *)font {
    static UILabel *stringLabel = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{//生成一个同于计算文本高度的label
    stringLabel = [[UILabel alloc] init];
    stringLabel.numberOfLines = 0;
    });
    stringLabel.font = font;
    stringLabel.attributedText = GetAttributedText(string);
    return [stringLabel sizeThatFits:CGSizeMake(width, MAXFLOAT)].height;
    }```
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • iOS开发的过程中,总是避免不了各种高度的自适应,如:UILabel、UITextView、UITableView...
    夜满西楼阅读 18,455评论 2 48
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,687评论 1 92
  • 1.iOS中的round、ceil、floor函数略解 round如果参数是小数,则求本身的四舍五入.ceil如果...
    K_Gopher阅读 4,918评论 1 0
  • 1.块级元素和行内元素 块级(block-level)元素;行内(内联、inline-level)元素。 块元素的...
    饥人谷_小侯阅读 6,192评论 1 4
  • 写在前面 iOS的的布局机制「auto layout」不是一个新概念,它早在iOS 6中就推出来了,当下距离iOS...
    西门淋雨阅读 5,461评论 2 4