Xcode8的一些特性(待续)

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之后

你可能感兴趣的:(Xcode8的一些特性(待续))