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