博客> 视频app指定界面的横屏竖屏旋转小总结
视频app指定界面的横屏竖屏旋转小总结
1小时前 评论:1 阅读:359 skyhome
ios 视频 横屏竖屏切换

最近做一款视频类app,需要有视频播放的界面要能横屏和竖屏切换,其他资讯类等界面只能竖屏,特别启动后首页必须只竖屏。下面是本人搜索资料后整理的可行方法。

步骤一: 1.iOS6和iOS7可以在AppDelegate中增加以下代码,设置程序支持的方向:

  • (NSUInteger)application:(UIApplication )application supportedInterfaceOrientationsForWindow:(UIWindow )window { return UIInterfaceOrientationMaskAll; } 或者(现在都iOS9.2了 本人推荐) 在[Targets]-[General]-[Deployment Info]里面设置,如下图:  0378E56C-6C2C-4842-BEEC-058E70368CF0.png 默认情况下Upside Down没有勾选,其他都勾选了。 (为什么Upside Down不推荐勾选呢,因为iPhone的电话app是不支持Upside Down的,如果你的app支持Upside Down,万一用户在用你的app的时候Upside Down了,这时候来了电话,就会看到整个来电的画面是颠倒的,用户体验很不好。一向注重用户体验的苹果是不推荐你勾选Upside Down的)

步骤二: 由于本人app开发习惯,基本都会有3个视图控制器:自定义的导航控制器(继承UINavigationController) 和UITabBarController视图控制器 以及 RootViewController视图(继承UIViewController,我app几乎每个视图界面继承RootViewController,理由:就是做些共同性质的特殊处理)。小编觉得一些好的编程习惯,是有必要的。

代码实现: 1.继承UITabBarController的.m文件中添加代码: -(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { // You do not need this method if you are not supporting earlier iOS Versions return [self.selectedViewController shouldAutorotateToInterfaceOrientation:interfaceOrientation]; }

-(NSUInteger)supportedInterfaceOrientations { return [self.selectedViewController supportedInterfaceOrientations]; }

-(BOOL)shouldAutorotate { return YES; } 2.继承UINavigationController的.m文件中添加代码: -(NSUInteger)supportedInterfaceOrientations { return [self.topViewController supportedInterfaceOrientations]; }

-(BOOL)shouldAutorotate { return YES; }

步骤三: 1.在需要横竖屏切换的页面中.m文件添加代码:

  • (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown); }

-(NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskAllButUpsideDown; }

-(BOOL)shouldAutorotate { return YES; }

2.在不需要横竖屏切换的页面中.m文件添加代码:(本人此代码写在RootViewController,意思就是给所有页面加一个基类,把不需要横竖屏切换的代码加到里面,再在需要横竖屏切换的页面中以此来覆盖基类的方法即可。)

  • (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return (interfaceOrientation == UIInterfaceOrientationPortrait); }

-(BOOL)shouldAutorotate { return NO; }

-(NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskPortrait; }

注意:手机默认启动屏幕的方向 在Info.plist中字段顺序为准,如果在Info.plist中增加字段的顺序为Landscape(right), Landscape(left), Portrait,则启动的时候为横屏;如果在Info.plist中增加字段的顺序为Portrait, Landscape(right), Landscape(left),则启动的时候为竖屏。  71F835B4-D481-4590-A760-C38BCA1C7BB5.png

收藏
1
sina weixin mail 回到顶部