控制应用横竖屏

作者: 时尚灬IT男 | 来源:发表于2016-10-14 11:05 被阅读83次

    iPhone



    最暴力的方法:

            首先要强制应用只能响应竖屏,在AppDelegate中添加以下方法。返回的枚举值,包含了很多种,竖屏、横屏向左、横屏向右等,这里我们只要竖屏。

    - (UIInterfaceOrientationMask)application:(UIApplication*)application supportedInterfaceOrientationsForWindow:(UIWindow*)window {returnUIInterfaceOrientationMaskPortrait;}


    针对部分view:

    -(NSUInteger)supportedInterfaceOrientations{

    return UIInterfaceOrientationMaskLandscape;

    }

    在需要横屏的 view 上加一个这个就可以了.切到这个 view 自动横屏


    直接上代码:

    希望可以帮助到像以前我一样苦苦找资料的同志。

    #import "CustomNavigationController.h"

    @interface CustomNavigationController ()

    @end

    @implementation CustomNavigationController

    - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

    {

    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

    if (self) {

    }

    return self;

    }

    - (void)viewDidLoad

    {

    [super viewDidLoad];

    // Do any additional setup after loading the view.

    }

    - (void)didReceiveMemoryWarning

    {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

    }

    -(BOOL)shouldAutorotate

    {

    return NO;

    }

    -(NSUInteger)supportedInterfaceOrientations{

    //return UIInterfaceOrientationMaskLandscapeRight;

    return self.orietation;

    }

    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

    {

    return (interfaceOrientation != self.orietation);

    }



    iPad




    在iPad应用开发时如何让设备只支持横屏(landscape)模式,我做了多次尝试,并没有发现比较简捷的设置方法。我尝试了大概大概3种方式。1、通过XCode设置“iPad Deployment info”,只选择横屏左和横屏右,部署测试后并没有生效,这种方法实质是在xxx_info.plist项目配置文件中添加如下信息:UISupportedInterfaceOrientations~ipadUIInterfaceOrientationLandscapeLeftUIInterfaceOrientationLandscapeRight

    2、通过对每个nib文件在IB中设置orientation为landscape,此法也不生效。

    3、重载shouldAutorotateToInterfaceOrientation:方法,这种方式是可行的。具体如下:- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{    // Return YES for supported orientationsreturn ((interfaceOrientation ==UIDeviceOrientationLandscapeLeft)||(interfaceOrientation ==UIDeviceOrientationLandscapeRight));}

    如果第一种方式生效,那么比较完美。虽然第三种方式可以完全满足横屏的需求,但是实现起来比较stupid,需要在每个controller中都重载shouldAutorotateToInterfaceOrientation:方法,当然也可以通过扩展UIViewController的方式来避免重复劳动。但是感觉也有点不太直接,期待有人指出sdk本身是否就有简捷方式支持。

    相关文章

      网友评论

        本文标题:控制应用横竖屏

        本文链接:https://www.haomeiwen.com/subject/hjmgyttx.html