如何使用下面的方法来支持接口方位的iOS 6.0:
shouldAutorotate
supportedInterfaceOrientations
preferredInterfaceOrientationForPresentation
作为“shouldAutorotateToInterfaceOrientation”中的iOS 6.0已经过时了。
请提供代码段来支持你的答案。
谢谢。
如何使用下面的方法来支持接口方位的iOS 6.0:
shouldAutorotate
supportedInterfaceOrientations
preferredInterfaceOrientationForPresentation
作为“shouldAutorotateToInterfaceOrientation”中的iOS 6.0已经过时了。
请提供代码段来支持你的答案。
谢谢。
在IOS 5弃用方法:
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}
替换在IOS 6和上述本弃用iOS 5的方法的等效的:
- (BOOL) shouldAutorotate
{
return YES;
}
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskLandscapeRight;
}
希望这可以帮助。
[编辑#1:加了我的UIViewController其成功启动在人像模式中的XCode 4.5 iPhone 6.0模拟器]
#import "FirstViewController.h"
@interface FirstViewController ()
@end
@implementation FirstViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self)
{
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}
-(BOOL)shouldAutorotate
{
return NO;
}
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskAll;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return UIInterfaceOrientationMaskPortrait;
}
[#edit 2:从横向唯一的应用的示例代码支持的iOS 5和iOS 6]
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return (interfaceOrientation == UIInterfaceOrientationLandscapeRight) || (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
}
- (BOOL)shouldAutorotate {
return YES;
}
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskLandscape;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
return UIInterfaceOrientationLandscapeLeft;
}
顺便说一句,你对你的Xcode项目设置设置,现在优先。 请确保您在项目的设置正确设置“支持的接口方向”阵列。 这对我来说这个问题。 删除不需要的那些和我的应用程序的工作就像它没有当我在Xcode 4.4.1编译
我的应用程序有一个自定义的UINavigationController子类,只存在几个视图控制器,所有的肖像,播放视频,在这种情况下,我想还允许两个横向放置时除外的一个实例。
基于@uerceg的答案,这是我的代码。
首先,我启用了人像,风景左,右景观在Xcode - >目标 - >摘要。
在UINavigationController的子类的实施方案中,我#import
“编<MediaPlayer/MediaPlayer.h>
然后,我实现了这些方法:
// Autorotation (iOS <= 5.x)
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
if ([self modalViewController] && [[self modalViewController] isKindOfClass:[MPMoviePlayerController class]]) {
// Playing Video: Anything but 'Portrait (Upside down)' is OK
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}
else{
// NOT Playing Video: Only 'Portrait' is OK
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
}
// Autorotation (iOS >= 6.0)
- (BOOL) shouldAutorotate
{
return YES;
}
-(NSUInteger)supportedInterfaceOrientations
{
NSUInteger orientations = UIInterfaceOrientationMaskPortrait;
if ([self modalViewController] && [[self modalViewController] isKindOfClass:[MPMoviePlayerController class]]) {
// Playing Video, additionally allow both landscape orientations:
orientations |= UIInterfaceOrientationMaskLandscapeLeft;
orientations |= UIInterfaceOrientationMaskLandscapeRight;
}
return orientations;
}
NicolasMiari的代码为我工作。 有一点不同的自旋我有提出UINavigationControllers一个的UITabBarController,我用故事板。 该的UITabBarController的子类的实现是完全一样的,并耐心等待与选择类的标签栏控制器在故事板。 它甚至建成后不是立即可用。
https://devforums.apple.com/thread/165384?tstart=0
https://devforums.apple.com/thread/166544?tstart=0
有许多的关于支持iOS6上的接口方向改变上述线程的例子和建议,涉及到的问题与游戏中心欣赏到两个线程,但应该足以让你开始。
您也应该检查iOS6的发布说明的UIKit下,不幸的是我不能给你一个直接的联系,因为我是新的。
这里避免邮政代码由于NDA
希望帮助