使用Autoresizing时的小注意

问题出现的条件:

xib(使用Autoresizing) + 代码调节UI

问题分析:

设置xib的时候,因为是要动态变高度的,所以就顺手给bannerHolderView的autoresizing横向拉伸做适配了

使用Autoresizing时的小注意_第1张图片

但是后面因为某种原因重新设置了bannerHolderView的frame了,

使用Autoresizing时的小注意_第2张图片

那么问题就来了,
bannerHolderView_frame的这个宏是有设置宽度的(并且是拿当前屏幕的宽)
换言之,
autoresize设置了宽度,代码又设置了宽度,并且两者都起效
(这不像autoLayout ; autoLayout冲突的话,有的约束,因为权限等因素而不起作用)

问题的效果:

run在小屏幕的时候(比如说屏幕宽为320的SE上),因为xib(375)的加载是挺靠前的,
代码调宽(当前屏幕320)是在viewwillAppear上;
而viewWillLayoutSubviews(viewWillAppear之后)貌似是按比例来映射到窗口上的,
viewDidLayoutSubviews映射完毕的时候,(中间省略一万个字)...... ,最终,发现是不满屏宽的(假如后面重新调用这个界面方法的时候可能又同步起来,这个bug可能会消失)。

其实run到iphone6s上的是没问题,因为xib(375)跟代码拿到的屏宽(375)同步,进一步印证上面的分析。

好了,问题解决:

autoresize跟代码不要同时设置一个东西,比如,把上面的autoresize的横向拉伸给去掉,

你可能感兴趣的:(使用Autoresizing时的小注意)