说下IOS屏幕旋转以及相关知识。
涉及的知识点有:
1、控制控制器方向。
2、整套app控制器方向控制。
3、屏幕旋转界面布局。
知识点:
1>控制控制器方向(ios9.0后)
实现下面3个方法即可。(注意在配置里面需要支持所有想要的旋转类型)
然后代码再做一层旋转控制,类似xib界面后然后代码再做修改。
方法一:这个方法实现控制器支持的旋转方向。
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
方法二;这个方法是否允许控制器旋转
-(BOOL)shouldAutorotate
{
return YES;
}
方法三:这个方法显示默认方向:
-(UIInterfaceOrientationMask)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
2>整套app控制器方向控制
目前app大多是一个tabbar和naviController来搭建的,这里的技巧是自定义tabbar然后确定旋转,然后自定义navbar控制器,然后贴上下面代码,代码功能是根据导航控制器栈顶控制来控制旋转的,所以只要控制栈顶就可以,这里又有个技巧就是自定义一个集成ViewController的基控制器,然后后面所有的控制器继承这个就可以了,特别界面单独处理就好了。
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return [self.topViewController shouldAutorotateToInterfaceOrientation:interfaceOrientation];
} - (BOOL)shouldAutorotate
{
return self.topViewController.shouldAutorotate;
} - (UIInterfaceOrientationMask)supportedInterfaceOrientations
{
return self.topViewController.supportedInterfaceOrientations;
} - (UIStatusBarStyle)preferredStatusBarStyle {
return self.topViewController.preferredStatusBarStyle;
}
3>屏幕旋转界面重新布局。
这里建议加的提议、弹出界面直接加载appdelegate的跟控制器上,然后布局,如果加载主窗口上,旋转后界面布局可能有问题没然后不好控制。这里多说下,监听手机实际屏幕方向,有的时候存在控制器锁死竖屏,但是不小心做旋转后,就会出现一点意外。这里的话建议在appdelegate里面监听状态栏旋转通知UIApplicationDidChangeStatusBarFrameNotification,因为这个是手机实际方向,而UIDeviceOrientationDidChangeNotification这个通知可能传感器是旋转了而实际界面锁死,这样就会出现布局问题。具体看需求,推荐UIDeviceOrientationDidChangeNotification;
如果还有其它未说明情况可以加qq聊2054461