zoukankan      html  css  js  c++  java
  • UIInterfaceOrientation over iOS6 (应用旋转屏幕)

     
    typedef NS_ENUM(NSInteger, UIInterfaceOrientation) {
        UIInterfaceOrientationUnknown            = UIDeviceOrientationUnknown,
        UIInterfaceOrientationPortrait           = UIDeviceOrientationPortrait,
        UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown,
        UIInterfaceOrientationLandscapeLeft      = UIDeviceOrientationLandscapeRight,
        UIInterfaceOrientationLandscapeRight     = UIDeviceOrientationLandscapeLeft
    };
    UIInterfaceOrientation enum 
    使App支持旋转
    有两种方法:
    1.选择Project->Target->General->Deployment Info->Device Orientation,勾选需要支持的屏幕方向,比如
         Portrait
         Upside Down
         Landscape Left
         Landscape Right
    2.在AppDelegate.m文件中,添加方法
    - (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
    {
        return UIInterfaceOrientationMaskPortrait|UIInterfaceOrientationMaskLandscape;
    }
    以上面中的设置为例
    启动画面的方向取决于方法一,启动画面之后的Window方向取决于方法二,如果未实现方法二,则取决于方法一
     
    大部分页面为Portrait,个别页面为Landscape
    例如AppDelegate中的window的rootViewController为TabBarController,则TabBarController的ViewControllers的旋转方向都取决于TabBarController,因此需要在TabBarController中实现以下方法
    #import "TYSXTabBarController.h"
    
    #define kTabBarColor [UIColor colorWithRed:0.953f green:0.953f blue:0.953f alpha:1.00f]
    #define kTintColor [UIColor colorWithRed:0.914f green:0.000f blue:0.294f alpha:1.00f]
    
    @implementation TYSXTabBarController
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        self.tabBar.translucent = NO;
        [self.tabBar setBarTintColor:kTabBarColor];
        self.tabBar.tintColor = kTintColor;
    }
    
    - (NSUInteger)supportedInterfaceOrientations
    {
        return UIInterfaceOrientationMaskPortrait;
    }
    
    - (BOOL)shouldAutorotate
    {
        return YES;
    }
    
    - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
    {
        return UIInterfaceOrientationPortrait;
    }
    @end
    TabBarController.m

    这样,TabBarController下的所有页面就都只能是竖向了。

    如何让某个页面只能是横向的呢?

    以全屏播放页面(FullScreenViewController)为例,Present显示该页面,如此,播放页面就与TabBarController独立开了,在FullScreenViewController.m中实现以下方法

    @implementation FullScreenViewController
    
    - (NSUInteger)supportedInterfaceOrientations
    {
        return UIInterfaceOrientationMaskLandscape;
    }
    
    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
    {
        return UIInterfaceOrientationIsLandscape(toInterfaceOrientation);
    }
    
    @end
    FullScreenViewController.m
  • 相关阅读:
    leetcode题解:Search in Rotated Sorted Array(旋转排序数组查找)
    leetcode 题解:Remove Duplicates from Sorted Array II(已排序数组去三次及以上重复元素)
    leetcode 题解:Remove Duplicates from Sorted Array(已排序数组去重)
    leetcode题解:Tree Level Order Traversal II (二叉树的层序遍历 2)
    leetcode 题解:Binary Tree Level Order Traversal (二叉树的层序遍历)
    c++ STL:队列queue、优先队列priority queue 的使用
    leetcode题解:Binary Tree Postorder Traversal (二叉树的后序遍历)
    算术表达式解析(第三版)词法分析版
    经典算法:牛顿迭代法求平方根
    进入游戏行业1年的总结
  • 原文地址:https://www.cnblogs.com/ihojin/p/uiinterfaceorientation-over-ios6.html
Copyright © 2011-2022 走看看