控制应用横竖屏


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本身是否就有简捷方式支持。

你可能感兴趣的:(控制应用横竖屏)