• iOS 强制横屏


    在iOS5.1 和 之前的版本中, 我们通常利用 shouldAutorotateToInterfaceOrientation: 来单独控制某个UIViewController的旋屏方向支持,比如:
    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation  
    {  
       return (interfaceOrientation == UIInterfaceOrientationPortrait);  
    }  

    但是在iOS6中,这个方法被废弃了,使用无效。
    shouldAutorotateToInterfaceOrientation:
    Returns a Boolean value indicating whether the view controller supports the specified orientation. (Deprecated in iOS 6.0. Override the supportedInterfaceOrientations andpreferredInterfaceOrientationForPresentation methods instead.)

    实践后会发现,通过supportedInterfaceOrientations的单独控制是无法锁定屏幕的。
    -(NSUInteger)supportedInterfaceOrientations  
    {  
       return UIInterfaceOrientationMaskPortrait;  


    多次实验后总结出控制屏幕旋转支持方向的方法如下:
    子类化UINavigationController,增加方法
    - (BOOL)shouldAutorotate  
    {  
       return self.topViewController.shouldAutorotate;  
    }
    - (NSUInteger)supportedInterfaceOrientations  
    {  
       return self.topViewController.supportedInterfaceOrientations;  
    }  

    并且设定其为程序入口,或指定为 self.window.rootViewController
    随后添加自己的view controller,如果想禁止某个view controller的旋屏:(支持全部版本的控制)
    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation  
    {  
       return (interfaceOrientation == UIInterfaceOrientationPortrait);  

    -(BOOL)shouldAutorotate  
    {  
       return NO;  
    }  

    -(NSUInteger)supportedInterfaceOrientations  
    {  
       return UIInterfaceOrientationMaskPortrait;  


    如果想又开启某个view controller的全部方向旋屏支持:
    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation  
    {  
       return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);  

    -(NSUInteger)supportedInterfaceOrientations  
    {  
       return UIInterfaceOrientationMaskAllButUpsideDown;  

    -(BOOL)shouldAutorotate  
    {  
       return YES;  


    从而实现了对每个view controller的单独控制。
    顺便提一下,如果整个应用所有view controller都不支持旋屏,那么干脆:
    - (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window  
    {  
        return UIInterfaceOrientationMaskPortrait;  
    }

    此外 如果如果希望在进入某个ViewController时就是横屏 那么你可以在

     - (void)viewWillAppear:(BOOL)animated

    {

       [superviewWillAppear:animated];

    CGFloat duration = [UIApplicationsharedApplication].statusBarOrientationAnimationDuration;

       [UIViewbeginAnimations:nilcontext:nil];

       [UIViewsetAnimationDuration:duration];

    self.navigationController.view.transform = CGAffineTransformIdentity;

    self.navigationController.view.transform = CGAffineTransformMakeRotation(M_PI*(90)/180.0);

    self.navigationController.view.bounds = CGRectMake(0, 0, 1024, 768);

       [UIViewcommitAnimations];

       [[UIApplicationsharedApplication] setStatusBarOrientation: UIInterfaceOrientationLandscapeRightanimated:YES];

    }

    转载:http://zqlswt1314.blog.51cto.com/3014999/1282672

  • 相关阅读:
    k8s运行容器之Job应用(6)
    k8s创建资源的两种方式及DaemonSet应用(5)
    kubernetes架构及deployment应用(4)
    docker部署harbor私有镜像库(3)
    k8s集群部署(2)
    kubernetes介绍(1)
    Docker网络(5)
    Docker存储(4)
    Docker镜像的仓库及底层依赖的核心技术(3)
    Docker的镜像及容器常用操作(2)
  • 原文地址:https://www.cnblogs.com/qc0815/p/3416873.html
Copyright © 2020-2023  润新知