4

我在导航堆栈上有 ViewControllers A 和 B。A不支持横向,B支持。如果用户在查看 B 时旋转到横向,然后点击返回按钮,则 A 现在处于横向状态。我该如何防止这种情况?是否有充分的理由不尊重 A 的 shouldAutorotateToInterfaceOrientation 方法?

4

2 回答 2

2

这对于视图控制器来说真的很烦人。而且它似乎无法解决自转问题。也许,最好从 B 的 shouldAutorotateToInterfaceOrientation 返回 NO,然后手动执行视图旋转。那么它不会影响A。

于 2011-02-06T12:41:59.613 回答
1

是的,我也讨厌那个......我发现解决它的方法就是自己做:

- (void)myAutomaticRotation{
    if (A.view.frame.size.width > A.view.frame.size.height) {
        [UIView beginAnimations:@"View Flip" context:nil];
        [UIView setAnimationDuration: 0.5f];
        [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];

        self.view.transform = CGAffineTransformIdentity;
        self.view.transform = CGAffineTransformMakeRotation(M_PI/2);
        self.view.bounds = CGRectMake(0.0f, 0.0f, 320.0f, 480.0f);
        A.view.frame = CGRectMake(0,0,320, 480);
        [UIView commitAnimations];
    }
}

当您导航到 A.view 时,您可以在主/超级 UIViewController 中调用 myAutomaticRotation,并且在同一个地方您应该使用:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

}

您可以在其中检查使用的视图(A,B)并仅允许 B 使用横向模式...

卢卡

于 2011-02-06T16:22:09.980 回答