xib的屏幕适配问题

我们在使用纯代码的时候一般都喜欢写一个setupUI来做譬如切边之类的事情.

纯代码一般都不会出现错误.

比如我们把一个cell写成了xib.那么他就不会走

- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier;

这个方法.而走的是

- (void)awakeFromNib;

这个方法.

在纯代码中,我们可以直接判断

- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {

    if (self = [superinitWithStyle:style reuseIdentifier:reuseIdentifier]) {

        [selfsetupUI];

    }

    returnself;

}

中间的setupUI方法就是我们各种切边之类的UI操作的方法.

但是如果我们走的是xib.那不好意思.如果直接在

- (void)awakeFromNib;

这个方法中直接self setupUI那么就会出现屏幕不适配的问题

网上很多的解决方案让大家把autolayout勾选去掉.但是我觉得这样就失去了xib本身的优势.毕竟取消勾选的话约束就全部失去了.

所以我们就通过系统的调用顺序来解决

xib的屏幕适配问题_第1张图片

从上图可以看出来.系统会先调用awakeFromNib.然后用layoutSubViews来进行二次布局.

我们在layoutSubViews里面先super 调用父类方法.然后setupUI就能够完成我们不把xib约束变成手写代码的需求了.

你可能感兴趣的:(UIKit,iOS中Xib的自动布局)