xib定义的view,无法适配屏幕宽度 |
您所在的位置:网站首页 › selfsetupui(self) › xib定义的view,无法适配屏幕宽度 |
在的storyboard的tableview中使用了xib自定义的cell,但显示出来的宽度不能自适应屏幕。 解决办法: 1、在xib文件中,去掉使用AutoLayout。(否则步骤2不起作用) 2、在cell里面重写layoutSubviews这个方法时,需要调用[super layoutSubviews]。在layoutSubviews方法中用代码去适配cell上各个部分frame。 --------------------- 版权声明:本文为CSDN博主「wsjshx」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/wsjshx/article/details/50363657 我们在使用纯代码的时候一般都喜欢写一个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本身的优势.毕竟取消勾选的话约束就全部失去了. 所以我们就通过系统的调用顺序来解决 从上图可以看出来.系统会先调用awakeFromNib.然后用layoutSubViews来进行二次布局. 我们在layoutSubViews里面先super 调用父类方法.然后setupUI就能够完成我们不把xib约束变成手写代码的需求了. --------------------- 版权声明:本文为CSDN博主「MeteoriteMan」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_18683985/article/details/77117222 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |