美文网首页
iOS开发中UILabel单行、多行文本计算高度、宽度的技巧

iOS开发中UILabel单行、多行文本计算高度、宽度的技巧

作者: 远处那片海 | 来源:发表于2016-07-02 18:13 被阅读188次
    • 首先来看单行文本的问题:对于单行文本来说,计算CGSize就比较简单了,这里直接上代码了,如下:
    NSString *content = @"欢迎来到北京";
    CGSize size =[content sizeWithAttributes:@{NSFontAttributeName:_label.font}];
    

    这个方法要特别注意,就是Label的字体要在添加视图之前就设置好,如果在这个方法里编辑字体大小,尺寸会有偏差,这点没查到是什么原因,希望各位解答一下,谢谢。

    • 最后来看多行文本的显示:

    首先UILabel的numberOfLines设置为0,其次通过
    - (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(NSDictionary *)attributes context:(NSStringDrawingContext *)context
    方法来计算CGSize,具体代码如下:

        UILabel *titleLabel = [UILabel new];
        titleLabel.font = [UIFont systemFontOfSize:14];
        NSString *titleContent = @"亲,欢迎您通过以下方式与我们的营销顾问取得联系,交流您再营销推广工作中遇到的问题,营销顾问将免费为您提供咨询服务。";
        titleLabel.text = titleContent;
        titleLabel.numberOfLines = 0;//多行显示,计算高度
        titleLabel.textColor = [UIColor lightGrayColor];
        CGSize titleSize = [titleContent boundingRectWithSize:CGSizeMake(kScreen_Width, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14]} context:nil].size;
        titleLabel.size = titleSize;
        titleLabel.x = 0;
        titleLabel.y = 0;
        
        [self.view addSubview:titleLabel];
    

    相关文章

      网友评论

          本文标题:iOS开发中UILabel单行、多行文本计算高度、宽度的技巧

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