1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > iOS强制横屏

iOS强制横屏

时间:2024-05-03 02:12:04

相关推荐

iOS强制横屏

在做视频播放时需要视频播放页面强制横屏,其他页面依然只支持竖屏,下面是使用过的两种方式。

iOS强制横屏的两种方式:

第1种:设置状态栏方向,然后vc.view设置transform旋转。注意:VC需要设置为只支持竖屏。

[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight animated:YES];[UIView animateWithDuration:0.25animations:^{self.view.transform = CGAffineTransformMakeRotation(M_PI/2);self.view.bounds = CGRectMake(0, 0, [[UIScreen mainScreen] bounds].size.height, [[UIScreen mainScreen] bounds].size.width);}completion:^(BOOL finished) {}];

然后重写VC屏幕旋转方法为只支持竖向:

#pragma mark //屏幕旋转- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {return (toInterfaceOrientation == UIInterfaceOrientationPortrait);}- (BOOL)shouldAutorotate {return NO;}- (NSUInteger)supportedInterfaceOrientations {return UIInterfaceOrientationMaskPortrait;//只支持这一个方向(正常的方向)}

第2种:强制横屏的VC需支持屏幕旋转,但只支持横向,其他vc都需要设置自己对屏幕方向的支持。

强制横屏VC最好使用自动布局,或者重写viewWillLayoutSubviews和viewDidLayoutSubviews,实现进行页面布局。

需要强制横屏的VC的屏幕方向支持代码:

#pragma mark 屏幕旋转//iOS5- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {return (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft||toInterfaceOrientation == UIInterfaceOrientationLandscapeRight);}//iOS6+- (BOOL)shouldAutorotate {return YES;}- (NSUInteger)supportedInterfaceOrientations {return UIInterfaceOrientationMaskLandscape;}

其他不需要支持横屏的VC的代码(建议放在BaseVC):

#pragma mark //屏幕旋转- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {return (toInterfaceOrientation == UIInterfaceOrientationPortrait);}- (BOOL)shouldAutorotate {return NO;}- (NSUInteger)supportedInterfaceOrientations {return UIInterfaceOrientationMaskPortrait;//只支持这一个方向(正常的方向)}

然后也是最关键的地方如果使用navgationController请使用其子类,并在子类种重写屏幕旋转方法:

#pragma mark //屏幕旋转- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {if ([self.topViewController respondsToSelector:@selector(shouldAutorotateToInterfaceOrientation:)]) {return [self.topViewController shouldAutorotateToInterfaceOrientation:toInterfaceOrientation];}return (toInterfaceOrientation == UIInterfaceOrientationPortrait);}- (BOOL)shouldAutorotate {if ([self.topViewController respondsToSelector:@selector(shouldAutorotate)]) {return [self.topViewController shouldAutorotate];}return NO;}- (NSUInteger)supportedInterfaceOrientations {if ([self.topViewController respondsToSelector:@selector(supportedInterfaceOrientations)]) {return [self.topViewController supportedInterfaceOrientations];}return UIInterfaceOrientationMaskPortrait;//只支持这一个方向(正常的方向)}

================================

做视频播放时需强制横屏,开始使用第一种方式实现,后因AirPlay选择框显示依然是竖屏方向,改用了第二种方式,如果可以最好使用第二种方式。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。