iOS DeveloperSwift&Objective-C

自定义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,也必须要用自动布局或三方布局工具去调宽高坐标(有点绕口)

以上

上一篇下一篇

猜你喜欢

热点阅读