转:UIView的sizeToFit与sizeThatFits

UILabel经常用到的方法
- (void)sizeToFit
- (CGSize)sizeThatFits:(CGSize)size
解释如下:

sizeToFit会自动调用sizeThatFits方法;

sizeToFit不应该在子类中被重写,应该重写sizeThatFits

sizeThatFits传入的参数是receiver当前的size,返回一个适合的size

sizeToFit可以被手动直接调用

sizeToFit和sizeThatFits方法都没有递归,对subviews也不负责,只负责自己

NSString  对label有用的方法,如下:
Computing Metrics for a Single Line of Text(针对单行的文字)
– sizeWithFont:
– sizeWithFont:forWidth:lineBreakMode:
– sizeWithFont:minFontSize:actualFontSize:forWidth:lineBreakMode:
Computing Metrics for Multiple Lines of Text(针对多行的文字,这个常用)
– sizeWithFont:constrainedToSize:
– sizeWithFont:constrainedToSize:lineBreakMode:

我们经常会根据label里面的文字的多少,来计算label的尺寸,例如做微博的cell的时候
我们经常会用“sizeWithFont:constrainedToSize:”来获得size,以此改变label的尺寸
其实,这个可以用label 的“sizeToFit”来替代,当label调用“sizeToFit”时,会自动改变label本身的尺寸,所以这个方法是没有返回值的。如果对“”的计算不满意,可以继承UILabel来自定义label,同时重写label的“sizeThatFits:”方法,这样自定义label的“sizeToFit”行为就会被改变。

UILabel有两个接口是专门用来重写,以此来自定义自己的label,如下:
Drawing and Positioning Overrides
– textRectForBounds:limitedToNumberOfLines:
– drawTextInRect:
上面这两个方法不是用来调用的,只适合被UILabel子类重写

– textRectForBounds:limitedToNumberOfLines:
用来改变label里面文字展示窗口的大小,你可以自己根据文字的多少,来计算窗口的大小

– drawTextInRect:
在绘图环境实现文字的绘制,这个方法里面里面已经配置好了绘图环境,使用方式如下:
1.直接获得当前绘图上下文,
2.接着更改绘图环境设置
3.在就是调用super方法来绘制即可

上一篇:iOS exit(),abort(),assert()函数区别


下一篇:ios UIView sizeToFit sizeThatFits