从iOS8.0后苹果重新定义了横竖屏变化的回调函数,开始逐渐废弃UIInterfaceOrientationd,对应的will/didRotatateToInterfaceOrientation:回调函数也开始废弃,对应新加的了两个代理UIContentContainer和UITraintEvironment,UIViewController已经继承了这两个代理,而我们需要实现的方法是willTransitionToTraitCollection: 和 viewWillTransitionToSize。
- (void)willTransitionToTraitCollection:(nonnull UITraitCollection *)newCollection withTransitionCoordinator:(nonnull id)coordinator{}
这个方法可以获取到变化后的controller的ClassSize属性,包括垂直方向和水平方法。
- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(nonnull id)coordinator{}
这里的size就是变化后controller的size。
所以一般我们如果不考虑横竖屏会有设计差异,可以实现viewWillTransitionToSize:更新UI。