美文网首页
UILabel的边距计算

UILabel的边距计算

作者: 小猿仔 | 来源:发表于2017-09-22 16:33 被阅读17次

    小伙伴们在开发时可能经常遇到这样的需求

    里面的内容是不固定的,四周都有间距,遇到这样的需求先不要急着用view嵌套再计算内容宽高来处理,有些麻烦了,下面说下思路

    如果单单用label来处理的话不能用分类,只能自定义label解决,因为需要重绘label的内容区域,这里需要用到两个方法

    1.- (CGRect)textRectForBounds:(CGRect)bounds limitedToNumberOfLines:(NSInteger)numberOfLines

    2.- (void)drawTextInRect:(CGRect)rect

    在自定义的label里面重写这两个方法,下面详细讲解一下这两个方法的作用:

    1.该方法传进来的bounds不用理会,如果你硬要了解可以输出一下,是3.xxxxxx很长一串,不清楚系统做了什么处理,在该方法里重新调用这个方法使用cgrect接收一下

    这个rect是label的内容区域,你可以改变这个rect  然后返回,就相当于改变了内容的位置和大小。 到这里第一个方法完毕,这个方法返回了内容的区域,那么如何调用它呢,两种办法

    第一种:

    sizeToFit或者sizeThatFits  这两个方法写上会重走上面第一个方法,但是这样调用并没有什么卵用,下面就该用到上面第二个方法了。

    第二种:

    - (void)drawTextInRect:(CGRect)rect {

    CGRect Rect = [self textRectForBounds:rect limitedToNumberOfLines:self.numberOfLines];

    [super drawTextInRect:Rect];

    }

    介绍一下第二种方法,它相当于重绘label的编辑区域,把它呈现在画布上,相当于上面第一种方法的应用。

    使用例子:

    调用的话sizeToFit和sizeThatFits这两个方法可以不用写,因为drawTextInrect这个方法系统会调用,那么就肯定会调用textRectForBounds这个方法啦,下面我再说一下什么时候用sizeToFit这个方法


    说完啦!

    可能有点罗嗦了,这里面心得体会真的很多,有想法的朋友可以评论下方交流,大家一起进步。

    demo已上传

    相关文章

      网友评论

          本文标题:UILabel的边距计算

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