2018-01-08 关于IOS UItableview cel

2018-01-09  本文已影响0人  逗比鑫

注意,一下内容适用于ios8及以上的系统


1.自适应行高类型

    1.使用xib自适应适应行高

    2.手工代码自适应适应行高


2.使用xib自适应适应行高

    1.使用xib自定义一个UItableviewcell

    2.在自定义的UItableviewcell的contentView中,手动添加子控件和约束,contentView                               的子控件的约束要在垂直方向上给contentView一个压力,这个压力用来计算UItableviewcell的行高

    3.在定义UItableview的时候,使用以下代码:

        self.tableView.estimatedRowHeight = 100;  

        self.tableView.rowHeight=UITableViewAutomaticDimension;

注意:self.tableView.estimatedRowHeight不能设置为0(虽然是估算行高)

    4.在代理方法里返回自定义的cell

    5.使用        self.tableView.rowHeight=UITableViewAutomaticDimension;的语句,可以不实现UItableviewcell行高的方法,或者在返回高度的方法中返回UITableViewAutomaticDimension

    6.reloaddata


3.使用纯代码自适应行高

    1.新建一个类继承自UItableviewcell,在初始化方法中添加约束。

    注意1:如果使用系统添加约束的方法,contentview的所有子控件都要实现以下代        码:translatesAutoresizingMaskIntoConstraints=NO;这行代码的作用就是不把AutoresizingMask自动转化为Constraints;在使用xib自定义cell的时候添加约束,xib文件会自动把translatesAutoresizingMaskIntoConstraints属性设置为但是使用手工书写代码的时候就不会自定添加这句代码,

如果使用masory添加约束则不需要使用translatesAutoresizingMaskIntoConstraints属性,具体原因不详(可能是masory在在代码里默认添加了)

注意2:约束如果添加的数值,尽量使用整形的数值,如果设置约束的数值小数点后面位的个数超过1位,会产生和cell的contentview的高度约束有冲突,导致cell显示不正常

2.在定义UItableview的时候,使用以下代码:

        self.tableView.estimatedRowHeight = 100;  

        self.tableView.rowHeight=UITableViewAutomaticDimension;

注意:self.tableView.estimatedRowHeight不能设置为0(虽然是估算行高)

3.在代理方法里返回自定义的cell

4.使用self.tableView.rowHeight=UITableViewAutomaticDimension;的语句,可以不实现UItableviewcell行高的方法,或者在返回高度的方法中返回UITableViewAutomaticDimension

6.reloaddata

上一篇 下一篇

猜你喜欢

热点阅读