最近公司要搞iPad的竖屏版本,使用了PrimaryOverlay的方式显示左侧的菜单栏,在实际开发过程中很是遇到了一些问题,这里就记录一下吧:
- 设备方向不等于实际方向
- 部分竖屏页面无法旋转到横屏
- 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也是可以的。
主要的问题也就这么三个吧,简单的说明和记录一下。