iOS启动画面方向显示错误的解决方案(unity)
在项目开发过程中发现,ios上的启动画面(splashimage,就是腾讯游戏那个画面),在手机屏幕旋转不锁定的情况下遇到两个问题:
一、 ios9之上的系统,如果手机竖直放置,会显示成
二、 如果手机横屏且home键在屏幕左侧即左横屏,会先看到正常方向的腾讯游戏画面,之后画面倒置,到游戏内的画面才又正向显示。
针对第一个问题,有两种方案:
1. 正常情况下的横屏游戏,可以直接在ios的plist里设置只支持横屏方向解决,即
但是我们的游戏需要用到玩物圈,而玩物圈要求必须在工程配置里支持竖屏,因此无法这样设置解决此问题。
2. 在这种设置要求下,可以从代码侧控制。启动时加入代码处理:
UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
if (orientation != UIInterfaceOrientationLandscapeLeft && orientation != UIInterfaceOrientationLandscapeRight)
{
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight];
}
即在竖屏时,自动将屏幕旋转至横屏方向;如果已经是横屏就不做旋转。(实验发现在竖直情况下默认启动方向为右横屏,因此上面也设置为右横屏。)
针对第二个问题,是由于ios自身的启动画面方向与untiy自己实现的splashimage方向不一致导致。在生成的SplashScreen.mm代码中可以看到,默认情况下,SplashScreenController只支持右横屏,而启动时ios的spalshimage为右横屏,因此看到二者方向不一致。
在我们的项目中,直接将SplashScreenController修改为支持左右横屏,如下
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskLandscape;
}
另外,为了确保SplashScreenController与当前设备方向一致,在其create方法中加入代码
[UIViewController attemptRotationToDeviceOrientation];
同步一次UIViewController方向。
修改后,构建版本,测试手机左横屏、右横屏、竖屏情况下,腾讯游戏的启动画面显示方向均显示正常。