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: 屏幕从横屏变为竖屏");
        }
    }
  • 相关阅读:
    关于量子计算机的一些整理 (精心整理原创) (1)
    自然语言交流系统 phxnet团队 创新实训 个人博客 (一)
    自然语言交流系统 phxnet团队 创新实训 项目博客 (一)
    double类型保留2位小数
    main函数位置
    java中main函数解析
    关于函数声明的小知识点
    数据帧、数据包、数据报以及数据段
    chrome 常用快捷键(可以摆脱鼠标哦)
    chrome 如何利用快捷键将光标移动到地址栏
  • 原文地址:https://www.cnblogs.com/fengmin/p/6429533.html
Copyright © 2011-2022 走看看