zoukankan      html  css  js  c++  java
  • (转)ios限制控制器旋转

    iOS屏幕旋转控制

    iOS屏幕旋转控制(iOS6之后)
          iOS6之前,子控制器只要覆盖父类的shouldAutorotateToInterfaceOrientation:方法就能单独控制某个指定的控制器,而iOS6之后,该方法被禁止使用,让旋转控制变得复杂了,本文只针对iOS6以后的旋转控制做讲解;
          iOS6以后,系统会调用rootViewControllerA控制器的shouldAutorotate等方法进行方向控制,所以,如果用户想单独控制每个页面,则我们需要在Root控制器的shouldAutorotate方法中,将控制返回值交给某个指定的控制器来返回,window的rootViewController分以下几种情况:UIViewController、UINavigationController、UIMainTabController、MMDrawerController开源框架(挑选这个做讲解);
     
          一、跟视图UIViewController:
          该情况不需要多谢,由UIviewController自己控制就行;
     
          二、跟视图为UINavigationController(在UINavigationController中设置)
    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation

    {

        return [self.topViewController shouldAutorotateToInterfaceOrientation:toInterfaceOrientation];

    }

    //6.0之后系统调用该方法

    - (BOOL)shouldAutorotate

    {

    //系统会调用跟视图的旋转控制方法,所以我们将跟视图将控制条件交给顶层视图(顶层视图即我们需要控制的视图)

    系统调用该方法

        return self.topViewController.shouldAutorotate;

    }

    //6.0之后系统调用该方法,应该支持的方向

    -(NSUInteger)supportedInterfaceOrientations

    {

        return self.topViewController.supportedInterfaceOrientations;

    }

     

    三、跟视图为UITabBarController(在UITabBarController中设置)

    //6.0之后系统调用该方法

    - (BOOL)shouldAutorotate

    {

        //返回顶层视图的设置(顶层控制器需要覆盖shouldAutorotate方法)

            UINavigationController *nav = (UINavigationController *)[self.viewControllersobjectAtIndex:mainTab.selectedIndex];

            return nav.topViewController.shouldAutorotate;

        }

        return NO;

    }

    //6.0之后系统调用该方法

    -(NSUInteger)supportedInterfaceOrientations

    {   

        //返回顶层视图支持的旋转方向

            UINavigationController *nav = (UINavigationController *)[self.viewControllersobjectAtIndex:mainTab.selectedIndex];

            return nav.topViewController.supportedInterfaceOrientations;

        return 0; 

    }

    四、跟视图为MMDrawerController

    //6.0一下系统调用该方法

    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation

    {

        //返回顶层视图的设置

        if (self.openSide == 0) {

            //centerShow

            MainTabBarController *mainTab = (MainTabBarController *)self.centerViewController;

            UINavigationController *nav = (UINavigationController *)[mainTab.viewControllersobjectAtIndex:mainTab.selectedIndex];

            NSLog(@"nav.topViewController.supportedInterfaceOrientations  : %d", nav.topViewController.shouldAutorotate);

            return [nav.topViewController shouldAutorotateToInterfaceOrientation:toInterfaceOrientation];

        }

        return NO;

    }

     

    //6.0之后系统调用该方法

    - (BOOL)shouldAutorotate

    {

        //返回顶层视图的设置

        if (self.openSide == 0) {

            //centerShow

            MainTabBarController *mainTab = (MainTabBarController *)self.centerViewController;

            UINavigationController *nav = (UINavigationController *)[mainTab.viewControllersobjectAtIndex:mainTab.selectedIndex];

            NSLog(@"nav.topViewController.supportedInterfaceOrientations  : %d", nav.topViewController.shouldAutorotate);

            return nav.topViewController.shouldAutorotate;

        }

        return NO;

    }

     

    //6.0之后系统调用该方法

    -(NSUInteger)supportedInterfaceOrientations

    {   

        //返回顶层视图支持的旋转方向

        if (self.openSide == 0) {

            //centerShow

            MainTabBarController *mainTab = (MainTabBarController *)self.centerViewController;

            UINavigationController *nav = (UINavigationController *)[mainTab.viewControllersobjectAtIndex:mainTab.selectedIndex];

            NSLog(@"nav.topViewController.supportedInterfaceOrientations ; %d", nav.topViewController.supportedInterfaceOrientations);

            return nav.topViewController.supportedInterfaceOrientations;

            

        } else if (self.openSide == 1) {

            //leftShow

        }

        return 0;

    }

    五、presentViewController视图控制

        模态弹出来的视图,并不能在window的跟视图中控制,(因为它不在这个堆栈中?)如果模态视图为UINavigationcontrollor,则需要交给他自己的UINavigationcontrollor中控制。

  • 相关阅读:
    使用select2插件并添加拼音首字母检索
    sql id 或使用nolock
    .net 开源组件
    EF 创建数据库的策略 codefist加快效率!【not oringin!】
    个人拾遗!数组的拷贝等
    编程拾遗:集合类型的函数,返回值,如果没有,就返回默认集合new,或者 default(T)好一些。
    C# datatable to list
    npoi导出excel 导出List<T>
    display:inline、block、inline-block的区别 摘】
    ie下,jquery为动态添加的节点添加事件,用live
  • 原文地址:https://www.cnblogs.com/pretty-guy/p/4519874.html
Copyright © 2011-2022 走看看