Iphone 通过presentModalViewController添加的视图自动旋转支持?

Iphone 通过presentModalViewController添加的视图自动旋转支持?,iphone,objective-c,cocoa-touch,Iphone,Objective C,Cocoa Touch,似乎无论我在应用程序中的视图支持什么方向,当我使用presentModalViewController显示视图时,应用程序都会捕捉到纵向视图。如何使用模态视图控制器支持不同的方向?使用presentModalViewController:animated:呈现的控制器应支持任何方向,通常使用以下方法: - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

似乎无论我在应用程序中的视图支持什么方向,当我使用presentModalViewController显示视图时,应用程序都会捕捉到纵向视图。如何使用模态视图控制器支持不同的方向?

使用presentModalViewController:animated:呈现的控制器应支持任何方向,通常使用以下方法:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return YES;
}

使用这种方法,当您以横向方向显示控制器时,它也将正确地以横向方向显示。

我也有同样的问题。我设置了真正的自动旋转界面方向,但一开始,我的modalview总是显示为纵向,即使它是横向的。只有当我改变了设备方向(在emulator中),它的行为才变得正确。但一开始不! 我不知道为什么,但这一切都取决于你们的观点。 例如,若您从viewDidLoad方法中显示,那个么问题就会出现。为了解决这个问题,我从一个在viewDidLoad中调用的方法调用presentModalView(显然,它看起来是一样的)。所以,我做了一些类似的事情:

- (void) viewDidLoad
{
    [super viewDidLoad];
    // add this line
    [self performSelector:@selector(presentModal) withObject:nil afterDelay:0];
}

-(void) presentModal{
    // here present your view
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return YES;
}

这对我很有用

我刚刚通过在viewDidAppear中添加代码解决了这个问题。我认为它没有以正确的方向显示是因为我在viewDidLoad中有显示模式代码,当时,我认为视图刚刚加载,但方向尚未设置。所以,在ViewDid中添加它似乎对我有用。您可能也会在ViewWillEmerge中遇到好运(因为到那时,它必须知道方向、边界、大小等)