UITableView使用Autolayout在iOS7和iOS8中计算不等高cell的方式

iOS8之后,苹果出了self-sizing技术。 允许开发者设置这两个属性,从而可以使用Autolayout在heightForRow方法之前算出cell的高度。

Snip20150701_2.png

补充注释:


Snip20150701_3.png

UILabel在使用Autolayout时的注意点:

  • 首先,UILabel在给定宽度时,系统会根据宽度值再进一步设置Label的一个属性


    Snip20150701_4.png

当Label这个属性有值之后,它才知道自己计算自己的文字尺寸时的最大宽度。

因此,如果要在iOS6,iOS7中,使用xib或者storyboard中的Autolayout方式来计算不等高cell的高度,意味着只能先给一个估算高度,然后在heightForRowAtIndexpath返回之前,手动设置UILabel的preferedMaxLayoutWidth属性

Snip20150701_5.png

并且在heightForRowAtIndexpath方法中,需要模仿cellForRowAtIndexpth里创建cell的方式,创建一个不用来显示,仅用来计算cell高度的cell ,并且要拿cell的layoutifneed方法强制布局内部子控件,才能实现在heightForRowAtIndexpath方法中,提前把所有cell的高度计算出来。
附图:

Snip20150701_6.png
Snip20150701_7.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容