1.xib和SB
- 问题
xib和storyboard布局混乱 iOS10之后获取xib/storyboard上的frame,会发现你永远获取的数值都是 (0,1000)
- 造成原因
Xcode8对xib和storyboard做出了一些修改,在awakeFromNib和viewDidLoad方法中拿自己拖上去的控件的frame均变成了(0, 0, 1000, 1000),若直接在此使用控件frame进行二次修改,如:修改A控件的宽为B控件的一半,则B控件实际当前的宽是1000,就会造成混乱。解决办法是在使用原控件frame之前调一次layoutIfNeeded方法。
- 小结
在更新Xcode8后,并打开了某个xib/storyboard后,最好run下看看是不是乱了。如果乱了,就去对应的controller或cell看看是不是在viewDidLoad和awakeFromNib中使用了控件的frame,如果使用了,请在使用前调用layoutIfNeeded方法。
- 有图有真相
layoutIfNeeded之前
layoutIfNeeded之后