iPad上的应用一般都会横竖屏支持,所以同一个界面页面的横竖布局也是不一样的。要实现横竖布局的不一样一般用到了UIView的layoutSubView方法。当UIView设置为自动适配屏幕时,当用户设备旋转的时候,就会调用layoutSubView这个方法,只要重写这个方法,然后判断屏幕的方向,调整控件的位址就可以了。现在大家可能会有些疑问,为什么不在UIViewController的这个方法:
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
进行判断。因为这个方法是作用于UIViewController下的,而不是直接作用于UIView进行控制,所以会发生延迟,作用的对象也不正确。所以建议用layoutSubView这个方法。在控制器中用viewWillLayoutSubviews或者viewDidLayoutSubviews方法。
判断横竖方法
if([UIApplicationsharedApplication].keyWindow.frame.size.width< [UIApplicationsharedApplication].keyWindow.frame.size.height) {
// 竖屏
} else {
// 横屏
}
网上还有其他的方法,每个系统版本可能判断的方式可能不一,具体可以去找度娘或者google。
demo下载地址 https://pan.baidu.com/s/1eSJqdHo