IOS开发入门iOS 全局禁止横屏,但视频播放界面选择性横屏的解决办法
白羽 2019-05-21 来源 :网络 阅读 598 评论 0

摘要:本文将带你了解IOS开发入门iOS 全局禁止横屏,但视频播放界面选择性横屏的解决办法,希望本文对大家学IOS有所帮助。

    本文将带你了解IOS开发入门iOS 全局禁止横屏,但视频播放界面选择性横屏的解决办法,希望本文对大家学IOS有所帮助。


IOS开发入门iOS 全局禁止横屏,但视频播放界面选择性横屏的解决办法


有时我们的APP并没有适配横屏的需求,但是在个别视频播放界面,我们需要在播放视频的时候横屏,退出全屏的时候不能横屏,但是有时候并没有原生API并没有给出解决方案。
   当其他界面不支持横屏时:
   这个解决方法比较容易
   在 APPDelegate.h 文件中增加属性:是否支持横屏
   /***  是否允许横屏的标记 */@property (nonatomic,assign)BOOL  allowRotation;
   在 APPDelegate.m 文件中增加方法,控制全部不支持横屏
   - (UIInterfaceOrientationMask)application:(UIApplication  *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window  {    if (self.allowRotation)  {        return   UIInterfaceOrientationMaskAllButUpsideDown;    }    return  UIInterfaceOrientationMaskPortrait;}
   这样在其他界面想要横屏的时候,我们只要控制 allowRotation 这个属性就可以控制其他界面进行横屏了。
  //需在上面#import "AppDelegate.h"AppDelegate *appDelegate =  (AppDelegate *)[[UIApplication sharedApplication]  delegate];appDelegate.allowRotation = YES;//不让横屏的时候 appDelegate.allowRotation  = NO;即可
   播放界面横屏
   所以这里可以使用 UIWindow 的通知,就可以解决
   [[NSNotificationCenter defaultCenter] addObserver:self  selector:@selector(begainFullScreen)  name:UIWindowDidBecomeVisibleNotification  object:nil];//进入全屏[[NSNotificationCenter defaultCenter] addObserver:self  selector:@selector(endFullScreen) name:UIWindowDidBecomeHiddenNotification  object:nil];//退出全屏
   在退出全屏时,增加逻辑让其强制编程竖屏,这样当全屏播放的时候,点击 down("完成") 时,就会自动变成竖屏了。
   //  进入全屏-(void)begainFullScreen{    AppDelegate *appDelegate  = (AppDelegate *)[[UIApplication sharedApplication]  delegate];    appDelegate.allowRotation = YES;}//  退出全屏-(void)endFullScreen{    AppDelegate *appDelegate =  (AppDelegate *)[[UIApplication sharedApplication] delegate];    appDelegate.allowRotation  = NO;     //强制归正:    if  ([[UIDevice currentDevice] respondsToSelector:@selector(setOrientation:)])  {        SEL selector = NSSelectorFromString(@"setOrientation:");        NSInvocation  *invocation = [NSInvocation invocationWithMethodSignature:[UIDevice  instanceMethodSignatureForSelector:selector]];        [invocation  setSelector:selector];        [invocation  setTarget:[UIDevice  currentDevice]];        int val  =UIInterfaceOrientationPortrait;        [invocation  setArgument:&val  atIndex:2];        [invocation  invoke];    }}
   亦可以建一baseViewController 其他控制器继承base 在base里设置禁止横屏 某一页面需要横屏 设置一下即可    

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之IOS频道!

本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程