zoukankan      html  css  js  c++  java
  • 单个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: 屏幕从横屏变为竖屏");
        }
    }
  • 相关阅读:
    计算机网络【七】:可靠传输的实现 (tcp窗口滑动以及拥塞控制)【转】
    计算机网络【六】:传输层-TCP概述 【转】
    计算机网络【五】:路由选择协议 【转】
    计算机网络【三】:数据链路层 【转】
    计算机网络【二】:物理层【转】
    计算机网络【一】:概述 【转】
    装饰模式-Decorator
    Java中的文件上传和下载
    模板方法模式-TemplateMethod
    策略模式-Strategy
  • 原文地址:https://www.cnblogs.com/fengmin/p/6429533.html
Copyright © 2011-2022 走看看