美文网首页
iOS开发:UILabel自适应高度/宽度

iOS开发:UILabel自适应高度/宽度

作者: iOS_SXH | 来源:发表于2017-01-09 17:25 被阅读0次

    对于Label的长度和高度问题,每次遇到都要写一堆代码来确定其bounds,所以写成了类别方便使用。这里做个记录,不多说直接上代码。


    创建类别-->UILabel+Frame


    .h中


    /**宽度不变,自动拉伸高度*/

    - (void)contentFitHeight;

    /**高度不变,适应自字体的宽度*/

    - (void)contentFitWidth;

    .m 中

    - (void)contentFitHeight {

    /**(可用)方法太蠢:废弃*/

    //    self.numberOfLines = 0;

    //    CGSize size = CGSizeMake(self.frame.size.width,CGFLOAT_MAX);

    //    NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc]init];

    //    paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;

    //    NSDictionary *attributes = @{NSFontAttributeName:self.font};

    //    CGSize newSize = [self.text boundingRectWithSize:size options:NSStringDrawingUsesFontLeading|NSStringDrawingUsesLineFragmentOrigin attributes:attributes context:nil].size;

    //    self.bounds = CGRectMake(0, 0, newSize.width, newSize.height);

    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, self.frame.size.width, 0)];

    label.text = self.text;

    label.font = self.font;

    label.numberOfLines = 0;

    [label sizeToFit];

    CGFloat height = label.frame.size.height;

    self.numberOfLines = 0;

    self.frame = CGRectMake(self.frame.origin.x, self.frame.origin.y,  self.frame.size.width, height);

    }

    - (void)contentFitWidth {

    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, CGFLOAT_MAX, 0)];

    label.text = self.text;

    label.font = self.font;

    [label sizeToFit];

    CGFloat width = label.frame.size.width;

    self.frame = CGRectMake(self.frame.origin.x, self.frame.origin.y, width, self.frame.size.height);

    }


    起初用的是设置属性的方法,通过方法得到Label的宽高并进行frame的修改。

    后来学习别人代码时候发现更好的方法:就是新创建一个Label来得到宽高,很简便。


    学无止境,做个记录

    2017-01-09-SXH

    相关文章

      网友评论

          本文标题:iOS开发:UILabel自适应高度/宽度

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