iOS横竖屏适配过程中碰到的问题

最近一直在做跟视频播放有关的App,在开发中,发现了许多与横竖屏有关的问题,下面会一一给大家介绍,为新手减少一些不必要的麻烦:

1.如何进行横竖屏适配

很简单,按图所示即可

iOS横竖屏适配过程中碰到的问题_第1张图片
打开App横竖屏

这样操作就可以让整个App所有页面都适配上横竖屏了,但是,这样会发现一个问题,在App内,只需几个或者一个页面适配横竖屏即可,这样该如何操作呢?

2.让需要的页面适配横竖屏

如何让仅仅需要的适配的页面适配横竖屏呢?

第一步:创建一个助手类


创建的助手类


iOS横竖屏适配过程中碰到的问题_第2张图片
助手类h文件内的实现代码
iOS横竖屏适配过程中碰到的问题_第3张图片
助手类m文件内的实现代码

此助手类主要作用是控制是否进行横竖屏,当需要横竖屏时,置为YES,否则人置为NO;

第二步:在Appdelagate内部控制App是否进行横竖屏

iOS横竖屏适配过程中碰到的问题_第4张图片
控制app横竖屏

在- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window内部写入代码控制横竖屏

进行这样操作之后,因为助手初始化默认值为NO,所以整个App又被强制竖屏了

紧接着,我们只需要在需要打开横竖屏的控制器内将助手类置为YES即可

iOS横竖屏适配过程中碰到的问题_第5张图片
将助手类置为YES即可

进行这样的操作,我们就可以看到,需要打开的页面被打开了

3.如何进行首页强制竖屏

但是在我开发工程中,发现如此操作,首页总是会在横屏启动时,页面错乱掉了

主要原因还是因为首页在启动时,其实并没有被强制竖屏

找了一下原因,发现App在启动时,

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

会比- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window先走

这样在App创建第一个控制器时,实际上是按照竖屏创建的,整个UI就会发生错乱

如何进行操作呢?

我们需要在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions内App创建之前讲App强行竖屏掉

iOS横竖屏适配过程中碰到的问题_第6张图片
didFinish内将App首页强行竖屏

这样,你就可以随心所欲的控制整个App内所有的页面进行横竖屏了

怕有些新手还是不太懂,附上github内的demo链接(https://github.com/Songxiaolong/anyway),希望对大家有帮助

你可能感兴趣的:(iOS横竖屏适配过程中碰到的问题)