美文网首页
iOS 强制横/竖屏

iOS 强制横/竖屏

作者: 武一顶顶 | 来源:发表于2018-05-17 00:18 被阅读30次
强制横竖屏

思路: 不同于自动旋转, 通过单利控制支持方向, 通过Device类强制让设备切换横竖方向

  1. 创建LFInterfaceOrientationManager工具类,管理横竖屏权限
//  支持屏幕旋转工具类

#import <Foundation/Foundation.h>

@interface LFInterfaceOrientationManager : NSObject

//屏幕旋转权限
@property (nonatomic, assign) UIInterfaceOrientationMask faceOrientationMask;
//自动旋转权限
@property (nonatomic, assign) BOOL shouldAutorotate;

+ (instancetype)shareInterfaceOrientationManager;
- (void)makeDevicePortrait;                           //手动竖屏
- (void)makeDevicePortraitRightOrLeft;                //手动横屏

@end


***************************************************

#import "LFInterfaceOrientationManager.h"

@interface LFInterfaceOrientationManager ()

@end

@implementation LFInterfaceOrientationManager


+ (instancetype)shareInterfaceOrientationManager {
    static LFInterfaceOrientationManager *_manager = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        _manager = [[LFInterfaceOrientationManager alloc] init];
    });
    return _manager;
}


- (instancetype)init {
    if (self = [super init]) {
        //app默认支持竖屏
        _faceOrientationMask = UIInterfaceOrientationMaskPortrait;
        //暂未配置
        _shouldAutorotate = NO;
    }
    return self;
}

#pragma mark - Private Methods


#pragma mark - Public Methods


#pragma mark - Getters and Setters

- (void)makeDevicePortrait {
    //更新旋转权限
    self.faceOrientationMask = UIInterfaceOrientationMaskPortrait;
    //手动旋转界面方向
    [[UIDevice currentDevice] setValue:[NSNumber numberWithInt:UIInterfaceOrientationPortrait] forKey:@"orientation"];
}


- (void)makeDevicePortraitRightOrLeft {
    //更新旋转权限
    self.faceOrientationMask = UIInterfaceOrientationMaskLandscapeLeft |UIInterfaceOrientationMaskLandscapeRight;
    //手动旋转界面方向
    [[UIDevice currentDevice] setValue:[NSNumber numberWithInt:UIInterfaceOrientationLandscapeLeft] forKey:@"orientation"];
}
@end
  1. appDeleage中添加方法
 //全局控制屏幕方向
- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
    return [LFInterfaceOrientationManager shareInterfaceOrientationManager].faceOrientationMask;
}
  1. 使用demo
#pragma mark - Event Handlers

- (void)rightItemButtonAction:(UIButton *)rightItemButton {
    rightItemButton.selected = !rightItemButton.selected;
    //横屏
    if (rightItemButton.selected) {
        [[LFInterfaceOrientationManager shareInterfaceOrientationManager] makeDevicePortraitRightOrLeft];
        self.navigationController.interactivePopGestureRecognizer.enabled = NO;
    } else {
        //竖屏
        [[LFInterfaceOrientationManager shareInterfaceOrientationManager] makeDevicePortrait];
        self.navigationController.interactivePopGestureRecognizer.enabled = YES;
    }
    
    [self.scheduleTableView reloadData];
}

相关文章

  • iOS 强制横/竖屏

    强制横竖屏 思路: 不同于自动旋转, 通过单利控制支持方向, 通过Device类强制让设备切换横竖方向 创建LFI...

  • ios强制横/竖屏

    - (void)viewWillAppear:(BOOL)animated { NSNumber *orien...

  • 编程技巧汇总

    iOS - 强制某个页面横屏,返回竖屏:https://www.jianshu.com/p/45ca13046ee...

  • 2022-03-05

    iOS16 强制横屏(竖屏)demo CSDN(0资源分)https://download.csdn.net/do...

  • iOS强制横屏或强制竖屏

    第一种解决方案(不推荐,直接跳过看第二种解决方案): 需求: 强制横竖屏,在某些情况下非常重要,在网上找了好多解决...

  • iOS强制横屏或强制竖屏

    第一种解决方案(不推荐,直接跳过看第二种解决方案): -,需求:强制横竖屏,在某些情况下非常重要,在网上找了好多解...

  • iOS强制横屏或强制竖屏

    原文链接https://my.oschina.net/huqiji/blog/3031940第一种方法会出现无法转...

  • iOS 强制横屏或强制竖屏

    灵活设置横竖屏,不用区分Push还是Present,都是可以设置。 第一步 在AppDelegate.h中添加旋转...

  • iOS强制横屏或强制竖屏

    第一种解决方案(不推荐,直接跳过看第二种解决方案): -,需求:强制横竖屏,在某些情况下非常重要,在网上找了好多解...

  • iOS强制横屏或强制竖屏

    第一种解决方案(不推荐,直接跳过看第二种解决方案): -,需求:强制横竖屏,在某些情况下非常重要,在网上找了好多解...

网友评论

      本文标题:iOS 强制横/竖屏

      本文链接:https://www.haomeiwen.com/subject/qndvdftx.html