2

在我的应用程序中,我使用纵向导航控制器启动 secondviewcontroller,然后在第四个viewcontroller 中完成,我应该在其中旋转 iPhone 以显示图像。现在的问题是:如果在目标中我以这种方式设置方向: 在此处输入图像描述

我可以使用这种方法来旋转我的图像:

- (void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{

它工作正常,但我不能锁定属于navigationcontroller 的所有视图,因为它们都旋转il 纵向和横向。

第二个选项是以这种方式设置目标: 在此处输入图像描述

但这种结构不检测方向:

在视图中会出现:

UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
    [self willRotateToInterfaceOrientation:orientation duration:1];

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{

    return (interfaceOrientation == UIInterfaceOrientationPortrait);

}

- (BOOL)shouldAutorotate
{
        return YES;
}

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscape;
}

- (void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {

        if (toInterfaceOrientation == UIInterfaceOrientationPortrait || toInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)
        {

        }
        else
        {

        }
    }

    else{

        if (toInterfaceOrientation == UIInterfaceOrientationPortrait || toInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)
        {

        }
        else
        {

        }

    }
}

什么是最好的解决方案?谢谢

4

2 回答 2

1

我不禁觉得,如果我阅读了文档,它会为我节省一些时间,但对我来说,解决方案是将UINavigaionController子类化并添加以下内容:

- (BOOL)shouldAutorotate
{
    return NO;
}

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    return UIInterfaceOrientationPortrait;
}

而且由于这里实际上没有任何实质性的事情发生,因此无需使用 coder 或其他任何东西来覆盖 init 。您可以在之前引用导航控制器的任何地方引用这个子类,包括 Interface Builder。

于 2013-08-20T12:23:49.250 回答
0

使用第一个配置。并实现方法

- (void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration

适用于所有视图控制器。只为想要的视图控制器允许横向。

于 2013-08-20T12:25:38.990 回答