问题描述:
不知道iOS7到iOS8底层苹果到底修改了什么?我们用代码控制的界面,在转屏时会出现问题。同样的代码在iOS7上运行都正确,运行到iOS8上旋转屏幕后别提多难看了。
有的界面面目全非啦,有的界面不断地缩小。
通过工具分析问题:
在网上看到好多朋友说Reveal是调试界面的利器,但我把它安装到苹果虚拟机上时,中间的界面视图根本无法显示。(如果有哪位大侠有解决方法,给小弟留个言,谢谢)
被逼无奈只好另找了一个工具Spark Inspecktor,使用后觉得它更强大,还能截获notification。
好了,该查找造成问题的原因了。
首先,在工程中配置引用Spark Inspecktor工具的frame work,然后设置其他配置项目,具体参看官网教程。
然后,启动工程先使用iOS7模拟器(竖屏),打开Spark Inspecktor工具,查看app底层界面UIWindow参数,截图如下:
然后,旋转模拟器至横屏,查看UIWindow参数,截图如下:
稍后总结,我们再启动iOS8模拟器(竖屏),查看UIWindow参数,截图如下:
竖屏基本跟iOS7一样,然后我们把它旋转至横屏,查看UIWindow参数,截图如下:
大家看到区别了吗?最底层UIWindow也进行旋转了。
解决方法:
看了一下之前程序员写的代码,如果屏幕旋转则调用自己写的一个旋转函数,让整个界面也进行旋转,并且设置界面上控件的大小。
问题是在iOS8上,底层UIWindow已旋转,如果你再次旋转那么就错误啦。
所以最终解决方法就是判断当前运行设备的系统是iOS8以上(包含8)版本吗?
是的话,那么不调用旋转函数,只设置控件大小即可。