最近遇到的一个关于iOS屏幕旋转的坑,而且还是自己无意中挖的

来源:互联网 发布:淘宝女款折扣凉鞋 编辑:程序博客网 时间:2024/06/06 16:27
1、背景:公司最近做一个所谓的HTML5版本的APP,说白了就是做一个网页,然后安卓和iOS用webView来加载这个网页。这种情况iOS整个项目就一个ViewController,但是某个页面是需要支持竖屏和横屏的,屏幕旋转为横屏后调用JS让网页适应横屏布局。

2、控制屏幕方向和调用JS方法:
- (NSUInteger)supportedInterfaceOrientations
{
    //_isCanChangeOrientation根据网页的链接来赋值YES or NO
    if (_isCanChangeOrientation) {
       
return UIInterfaceOrientationMaskLandscapeLeft|UIInterfaceOrientationMaskLandscapeRight| UIInterfaceOrientationMaskPortrait;
    }
else{
       
return UIInterfaceOrientationMaskPortrait;
    }
}

- (
void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
   
switch (toInterfaceOrientation) {
       
case UIInterfaceOrientationLandscapeLeft:
       
case UIInterfaceOrientationLandscapeRight:
           
//横屏显示的时候,调用JS方法
            [
_mWebViewstringByEvaluatingJavaScriptFromString:@"setOrientation4H5(\"0\");"];
           
break;
       
default:
           
break;
    }
}

3、坑?
在- (NSUInteger)supportedInterfaceOrientations;这个方法打了一个断点,运行项目,旋转屏幕。发现这个方法只进来一次,而我记得这个方法是设备检测到旋转都会进来的。后来发现是因为ViewController套了一个NavigationViewController,去掉NavigationViewController后,再运行旋转屏幕,每次旋转都进到这个方法了。
}
0 0
原创粉丝点击