• IOS 6 旋转 问题



    在iOS 5下画面的旋转都是shouldAutorotateToInterfaceOrientation来控制的,但是这个函数在ios6下不起作用。

    在iOS 6下使用supportedInterfaceOrientations、shouldAutorotate来控制。

    如果单一的控制画面那么只需要加在上面两个函数。如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    - (BOOL)shouldAutorotate {

        return YES;
    }

    - (NSUInteger)supportedInterfaceOrientations {

        return UIInterfaceOrientationMaskAll;
    }

    如果是含有UINavigationController、UITabBarController的话,那么修改部分就多了。

    用其派生类的,在派生类中增加上面的supportedInterfaceOrientations、shouldAutorotate函数。

    下面如MyNavigationController就是UINavigationController 的派生类。
    修改部分如下
    1:在旧的程序中AppDelegate的部分如

    定义的 UINavigationController *navigationController;

    1
    [window addSubview:[navigationController view]];  //不能旋转

    改为
    MyNavigationController *myNavigationController;

    1
    self.window.rootViewController = self.myNavigationController;

    派生类主要部分为

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    #import "MyNavigationController.h"

    @interface MyNavigationController ()

    @end

    @implementation MyNavigationController

    - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
    {
        self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
        if (self) {
            // Custom initialization
        }
        return self;
    }

    - (void)viewDidLoad
    {
        [super viewDidLoad];
        // Do any additional setup after loading the view.
    }

    -(BOOL)shouldAutorotate
    {
        return [self.viewControllers.lastObject shouldAutorotate];
    }

    -(NSUInteger)supportedInterfaceOrientations
    {
        return [self.viewControllers.lastObject supportedInterfaceOrientations];
    }

    -(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
    {
        return [self.viewControllers.lastObject preferredInterfaceOrientationForPresentation];
    }

    - (void)didReceiveMemoryWarning
    {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }

    @end

    这样就能控制所有的控制画面中的旋转了,当然别忘了在每个控制画面都增加旋转的函数。
    根据多篇文章改写的,目前根据这样的方式,能够解决自己目前的问题,

    如果大家还有更好的方式,还需要多指教。

    转自

    http://www.dapps.net/dev/iphone/ios-6-supporting-multiple-interface-orientations.html

  • 相关阅读:
    .net Dapper 学习系列(1) ---Dapper入门
    ASP.NET WebApi 学习与实践系列(2)---WebApi 路由请求的理解
    ASP.NET WebApi 学习与实践系列(1)---如何创建 WebApi
    Sqlserver 总结(2) 存储过程
    Image.Save出错 GDI 一般错误
    python导入模块的两种方式
    从1KW条数据中筛选出1W条最大的数
    C# EF更新当前实体报错 ObjectManager无法管理具有相同键值的多个对象
    微信小程序 异步请求拿数据+使用外部js库
    微信小程序入门 第一个页面搭建
  • 原文地址:https://www.cnblogs.com/gaoxiao228/p/3025850.html
Copyright © 2020-2023  润新知