关于iOS横竖屏的问题

在iOS开发的过程中,有时候会遇到固定的一个界面需要能随意切换横竖屏,而且其他的界面都不可以切换的时候。就必须在工程文件中如下图,

项目工程文件

这个时候的整个项目就都是处于可以横竖屏切换的状态。所以此时,你必须通过在AppDelegate.m文件中用代码来控制界面的横切屏切换。
- (UIInterfaceOrientationMask)application:(UIApplication)application supportedInterfaceOrientationsForWindow:(UIWindow)window {
if(_isLandscape) {
//判断当前的界面横竖屏状态
UIDeviceOrientation orientation = [UIDevicecurrentDevice].orientation;
if(orientation == UIDeviceOrientationLandscapeLeft || orientation == UIDeviceOrientationLandscapeRight){
return UIInterfaceOrientationMaskLandscape;
}else{//横屏后旋转屏幕变为竖屏
return UIInterfaceOrientationMaskPortrait;
}
}else{
return UIInterfaceOrientationMaskPortrait;
}
}
UIDeviceOrientation 是机器硬件的当前旋转方向 这个你只能取值 不能设置
这个时候,你就可以通过设置 _isLandscape的值来控制界面是否能进行横竖屏的切换。

typedef NS_ENUM(NSInteger, UIDeviceOrientation) {
  UIDeviceOrientationUnknown,             //系統無法判斷目前Device的方向,有可能是斜置   
  UIDeviceOrientationPortrait,            // 设备垂直方向上,按钮在底部
  UIDeviceOrientationPortraitUpsideDown,  // 设备垂直方向上,按钮在顶部
  UIDeviceOrientationLandscapeLeft,       // 设备水平方向,按钮在右边
  UIDeviceOrientationLandscapeRight,      // 设备水平方向,按钮在左边
  UIDeviceOrientationFaceUp,              // 面向设备的扁平化,屏幕向上
  UIDeviceOrientationFaceDown             // 面向设备的扁平化,屏幕向下
 } __TVOS_PROHIBITED;

在ViewController里面,你可以通过获取AppDelegate里面的_isLandscape值来控制屏幕能否横竖屏切换
- (void)backToPortrait : (BOOL)isLan{//回到竖屏
AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
appDelegate.isLandscape = isLan;
}


横屏状态

初次写博客,可能表述上有些不清晰,需要的话可以留言,大家多讨论。谢谢。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 关于横竖屏适配,有一句说一句,坑挺深的。之前做Vision和毕设的时候就处理过横竖屏问题,不过当时的功力太浅,明显...
    HarwordLiu阅读 37,499评论 26 137
  • 我喜欢一个 长腿叔叔 看他在风里迷失自己 我闪烁的言语演着着迷 躲你 太阳眷顾着我的情绪 破旧的老榆树给我一个阴影...
    喜喜美好阅读 2,206评论 0 6
  • 心を 全部 焼き尽くすような 絶望の隣で いつだって 仿佛将心也灼烧殆尽 绝望踱步在近旁 君は すべて とかすよう...
    谢小帅阅读 2,299评论 0 1