自定义Xib的View在带XIB的控制器上布局错乱的解决方法
2017-07-13 本文已影响0人
会飞的kim
不会讲话,直接进入主题:
问题重现:
1、我创建了个带xib的控制,蓝色是一个普通view,要在这个普通的view上加载自定义view
2、这是我的自定义view
3、这是我的自定义view的.m实例化方法
4、在控制器上创建这个自定义View
5、模拟器显示高度好像可以,但是宽度完全不对
6、查看三维度,完全崩溃了,宽高全不对
错误重现完毕,以上
经过各种反复的思考及验证,得出了答案,但这个答案必须对自动布局有一定了解才能明白:
问题答案:
在控制器中,这个蓝色view是自动布局写的,并非写死frame的,对于自定义View来说,蓝色View自己都不知道自己的具体尺寸,怎么保证我的宽高呢,自动布局与frame在某种角度上说是对立的,用自动布局,就不能用frame
,解决方法就是自定义的view,放弃frame的布局,也用自动布局autolayout、masonry、sdautolayou等原生及三方法工具,
最后的运行结果:
总结:
一、如果自定义xib的View,是直接加载self.view这个父视图上的话,用frame去调整宽高是没有问题的
二、如果自定义xib的view,是加载到self.view里面的某个使用自动布局的View上面的,这个自定义xib的view,也必须要用自动布局或三方布局工具去调宽高坐标(有点绕口)
以上