iOS8之后,苹果出了self-sizing技术。 允许开发者设置这两个属性,从而可以使用Autolayout在heightForRow
方法之前算出cell的高度。
补充注释:
Snip20150701_3.png
UILabel在使用Autolayout时的注意点:
-
首先,UILabel在给定宽度时,系统会根据宽度值再进一步设置Label的一个属性
Snip20150701_4.png
当Label这个属性有值之后,它才知道自己计算自己的文字尺寸时的最大宽度。
因此,如果要在iOS6,iOS7中,使用xib或者storyboard中的Autolayout方式来计算不等高cell的高度,意味着只能先给一个估算高度,然后在heightForRowAtIndexpath
返回之前,手动设置UILabel的preferedMaxLayoutWidth属性
并且在heightForRowAtIndexpath
方法中,需要模仿cellForRowAtIndexpth
里创建cell的方式,创建一个不用来显示,仅用来计算cell高度的cell
,并且要拿cell的layoutifneed
方法强制布局内部子控件,才能实现在heightForRowAtIndexpath方法中,提前把所有cell的高度计算出来。
附图:
网友评论