美文网首页
iOS屏幕旋转控制,极简

iOS屏幕旋转控制,极简

作者: 梦_火花 | 来源:发表于2019-02-26 17:42 被阅读0次

iOS屏幕旋转控制的简单实现,使用方式也非常简单,需要控制旋转的UIViewController遵守ShouldNotAutorotate协议即可,如:

MyUIViewController : UIViewController <ShouldNotAutorotate>

此方式适用于部分需要控制旋转,而部分不需要控制旋转的项目,有想法的自行修改。源码

//  UIViewController+ShouldNotAutorotate.h
#import <UIKit/UIKit.h>

/** 使用此协议的UIViewController不要重写shouldAutorotate和supportedInterfaceOrientations方法,否则旋转的控制就会失效 */
@protocol ShouldNotAutorotate @end

@interface UIViewController (ShouldNotAutorotate)

@end


//  UIViewController+ShouldNotAutorotate.m
#import "UIViewController+ShouldNotAutorotate.h"
#import <objc/runtime.h>

@implementation UIViewController (ShouldNotAutorotate)

+ (void)load
{
    Method sa = class_getInstanceMethod(self, @selector(shouldAutorotate));
    Method xm_sa = class_getInstanceMethod(self, @selector(xm_shouldAutorotate));
    method_exchangeImplementations(sa, xm_sa);

    Method sio = class_getInstanceMethod(self, @selector(supportedInterfaceOrientations));
    Method xm_sio = class_getInstanceMethod(self, @selector(xm_supportedInterfaceOrientations));
    method_exchangeImplementations(sio, xm_sio);
}

- (BOOL)xm_shouldAutorotate
{
    if ([self conformsToProtocol:@protocol(ShouldNotAutorotate)]) return NO;
    return [self xm_shouldAutorotate];//返回原来的结果
}

- (UIInterfaceOrientationMask)xm_supportedInterfaceOrientations
{
    if ([self conformsToProtocol:@protocol(ShouldNotAutorotate)]) return UIInterfaceOrientationMaskPortrait;
    return [self xm_supportedInterfaceOrientations];//返回原来的结果
}

@end

相关文章

  • iOS屏幕旋转控制,极简

    iOS屏幕旋转控制的简单实现,使用方式也非常简单,需要控制旋转的UIViewController遵守ShouldN...

  • 屏幕旋转和弹出框

    iOS中控制屏幕旋转相关方法 shouldAutorotate:是否支持屏幕旋转 alertView:clicke...

  • IOS 屏幕旋转个人总结

    说下IOS屏幕旋转以及相关知识。涉及的知识点有:1、控制控制器方向。2、整套app控制器方向控制。3、屏幕旋转界面...

  • iOS 屏幕旋转控制

    /** 屏幕旋转控制 allowRotateType ==(0强制竖屏,1横竖屏,2~强制横屏 )*/ (UIIn...

  • 屏幕旋转

    屏幕旋转 推荐文档 了解UIWindow——UIWindow实践 iOS屏幕旋转问题总结 IOS:屏幕旋转与变换 ...

  • iOS-控制屏幕旋转

    这个方法不推荐,因为有可能你到appstore上的时候很可能被拒掉。不是苹果公开的API. 这里的 各位看官自行调...

  • ios手机屏幕旋转控制

    //全局控制禁止转屏

  • ios控制屏幕旋转及相关问题

    ios控制屏幕旋转及相关问题 测试开发环境: Xcode 11.3语言环境: Swift 5.0 [TOC] 一、...

  • iOS 灵活的控制屏幕旋转

    之前有篇文章讲灵活的控制状态栏,这篇文章来讲一下控制屏幕旋转方向。 两篇文章的核心思想是一致的,都是将控制权传递给...

  • iOS-屏幕旋转控制总结

    这段时间做的一个app,需求是大部分界面竖屏,播放器页面横屏,网页播放可横屏可竖屏。查阅了一些资料,也踩了一些坑,...

网友评论

      本文标题:iOS屏幕旋转控制,极简

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