• 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
  • 相关阅读:
    html页面小技巧
    文件上传动态获取文件名
    thymeleaf之下拉框回显选中
    地图/导航控件哪家强?DevExpress WPF v19.2帮你忙
    Web UI开发神器—Kendo UI for jQuery数据管理之过滤操作
    开启.NET Core 3时代,DevExpress v19.2.5带你全新启航
    DevExpress WPF 2020全新出发,功能计划蓝图一览
    2020还有9天!Winforms开发有哪些期待?DevExpress 2020计划出炉
    Web UI开发神器—Kendo UI for jQuery数据管理网格编辑操作
    甘特图、Data Editors控件新玩法—DevExpress WPF v19.2
  • 原文地址:https://www.cnblogs.com/ihojin/p/uiinterfaceorientation-over-ios6.html
Copyright © 2020-2023  润新知