Ziank的技术博客

iPad横竖屏切换中的注意点

最近公司要搞iPad的竖屏版本,使用了PrimaryOverlay的方式显示左侧的菜单栏,在实际开发过程中很是遇到了一些问题,这里就记录一下吧:

  1. 设备方向不等于实际方向
  2. 部分竖屏页面无法旋转到横屏
  3. Popover出现覆盖问题

关于这几个问题,其实也并没有特别的麻烦,只是一时间会想不到解决思路而已。

设备方向问题

设备方向不能够直接读取[UIDevice currentDevice]的方向,因为device的方向还存在FaceUp和FaceDown,如果只使用[UIDevice currentDevice]来获取的话,会出现识别错误的情况。所以正确的做法应该是先使用[UIDevice currentDevice]获取,如果是FaceUp或者FaceDown,在使用statusBar的方向来进行识别,最终获取正确的方向。

部分页面无法旋转的问题

这个主要是有一部分页面是从primaryController弹出的页面,这些页面在转屏时就会无法旋转。正确的做法是使用category或者共有父类,重写present方法,判断如果是splitController的primaryController在弹出页面,修改为使用splitController弹出。

Popover的覆盖问题

由于PrimaryOverlay模式下,菜单页面的出现也是一个popover,如果不进行处理的话,就会导致菜单页面覆盖了原页面的popover。这个问题没有找到更好的办法,我也只是在屏幕旋转的时候,把当前页面弹出的popover消失,这样就可以避免出现覆盖的问题。当然,还有一个办法,就是在屏幕旋转的时候,如果判断有popover,把模式设置为PrimaryHidden也是可以的。

主要的问题也就这么三个吧,简单的说明和记录一下。