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

  • 相关阅读:
    Bzoj1597 [Usaco2008 Mar]土地购买
    Bzoj1500 [NOI2005]维修数列
    模拟7 题解
    模拟6 题解
    模拟5 题解
    远古杂题 2
    远古杂题 1
    [NOIP2013]华容道 题解
    奇袭 CodeForces 526F Pudding Monsters 题解
    图论杂题
  • 原文地址:https://www.cnblogs.com/gaoxiao228/p/3025850.html
Copyright © 2011-2022 走看看