• 单个APP页面支持屏幕旋转


    1、info中支持所有的方向

    2、APPDelega.h中添加属性

    @property (nonatomic,assign) BOOL allowRotate;

    APPdelegate.m中实现方法

    //此方法会在设备横竖屏变化的时候调用
    - (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
        if (_allowRotate) {
            return UIInterfaceOrientationMaskAll;
        }else{
            return UIInterfaceOrientationMaskPortrait;
        }
    }

    3、在需要旋转的单个页面中添加

    - (void)viewWillAppear:(BOOL)animated {
        [super viewWillAppear:animated];
        AppDelegate * delegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
        delegate.allowRotate = YES;
    }
    
    - (void)viewWillDisappear:(BOOL)animated {
        [super viewWillDisappear:animated];
        AppDelegate * delegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
        delegate.allowRotate = 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];
        }
    }
    - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
        if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || toInterfaceOrientation == UIInterfaceOrientationLandscapeRight) {
    //        屏幕从竖屏变为横屏时执行
            NSLog(@"屏幕从竖屏变为横屏");
            
        }else{
    //        屏幕从横屏变为竖屏时执行
            NSLog(@"屏幕从横屏变为竖屏");
        }
    }
    
    
    - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
        // do something after rotation
        
    }

    后话

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientChange:) name:UIDeviceOrientationDidChangeNotification object:[UIDevice currentDevice]];
    - (void)orientChange:(NSNotification *)notification {
        UIDeviceOrientation orientation = [UIDevice currentDevice].orientation;
        if (orientation == UIDeviceOrientationLandscapeLeft) {
            NSLog(@"notification: 屏幕从竖屏变为横屏");
        } else if (orientation == UIDeviceOrientationLandscapeRight) {
            NSLog(@"notification: 屏幕从竖屏变为横屏");
        } else if (orientation == UIDeviceOrientationPortrait) {
            NSLog(@"notification: 屏幕从横屏变为竖屏");
        }
    }
  • 相关阅读:
    godaddy的win主机发邮件的组件
    读取excel的时候,往往多了很多空白行,下面的代码是去掉空白行的
    where泛型约束
    博客园页面有问题,
    今晚就出发回家啦!!!!
    呵呵,日期小小技巧
    获取设置本地当前默认打印机
    Queue Explorer过期处理
    SQL多关键字查询 并按精确度排序
    python 高阶函数
  • 原文地址:https://www.cnblogs.com/fengmin/p/6429533.html
Copyright © 2020-2023  润新知