其实一般来说在ipad开发中,最需要注意的就是屏幕的适配了,因为ipad是可以任意的转换方向的,我们如果有需求去进行横竖屏适配的话。我们可以在一个方法中进行横屏尺寸和竖屏尺寸的调整。这里面的size就是屏幕经过旋转之后得到的屏幕的size
-(void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
{
}
然后其实我们判断当前的屏幕是否是横屏还是竖屏完全可以根据宽度是否大于高度来判断,也就是说我们完全可以根据[UIScreen mainScreen].bounds 获取屏幕的size来进行判断,因为ipad尺寸目前还没有正方形的,所以完全可以根据宽高来判断。
判断完成之后,我们可以在我们需要修改的控件中的layoutSubviews中进行修改控件的frame,注意这里一般不会去使用autolayout,因为autolayout这个一般是用在于frame固定不变就是一旦约束产生就不会改变,如果要改变当然也可以做,但是会比较麻烦,判断横竖屏,然后去更新约束,或者说你有些控件可能希望在横屏的时候隐藏啊之类的,这样就会不好做了。
还有其实我们可以根据有UIDevice的一个属性orientation可以来判断,我们点进去之后会发现有下面这段话,大概的意思其实就是会返回当前设备的方向,但是返回的都是UIDeviceOrientationUnknown,也就是说我们要去调用beginGeneratingDeviceOrientationNotifications,去监听通知才可以。
UIDeviceOrientation orientation = [[UIDevice currentDevice]orientation];
[[UIDevice currentDevice]beginGeneratingDeviceOrientationNotifications];
然后去监听通知
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(deviceOrientationDidChange) name:
UIDeviceOrientationDidChangeNotification object:nil];
实现下面的方法就可以判断了
-(void)deviceOrientationDidChange
{
UIDeviceOrientation orientation = [[UIDevice currentDevice]orientation];
//竖屏
if(orientation == UIDeviceOrientationPortrait)
{
NSLog(@"--------");
}
//其实就是home键在右边
else if(orientation==UIDeviceOrientationLandscapeLeft)
{
NSLog(@"kkkk");
}
}