zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    在MAC系统的eclipse里打开android sdk manager
    在MAC上搭建eclipse+android开发环境以及eclipse的svn插件的安装
    C语言入门
    变量和数据类型
    兼容 FF&IE 的替换鼠标选择文字方法(转载)
    JavaScript 中在光标处插入添加文本标签节点 详细方法
    jquery获取鼠标位置
    转:javascript Range对象跨浏览器常用操作
    日省三思
    jQuery强大的jQuery选择器 (详解)[转]
  • 原文地址:https://www.cnblogs.com/qc0815/p/3416873.html
Copyright © 2011-2022 走看看