我在导航堆栈上有ViewControllers A和B. A不支持横向,B确实。如果用户在查看B时旋转到横向,然后点击返回按钮,则A现在处于横向。我如何防止这种情况? A的shouldAutorotateToInterfaceOrientation方法有没有很好的理由?如何只允许导航堆栈中的一个视图旋转?
4
A
回答
2
这对视图控制器来说真的很烦人。而且它似乎不适合自动旋转。也许,最好从B的shouldAutorotateToInterfaceOrientation返回NO,然后手动执行视图旋转。然后,它会不会影响A.
+0
拉我的头发!你如何手动强制改变方向?问题是我需要实际改变方向,所以键盘显示在正确的位置。 – 2013-11-20 15:55:07
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];
}
}
你可以调用myAutomaticRotation在主/超强的UIViewController当你浏览到A.view, 并在同一个地方,你应该使用:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
}
在那里你可以检查(A,B)使用的视图,并允许横向模式只是对于B ...
luca
+0
感谢您的代码在这里。我认为Max在每个viewController中分别处理旋转的建议稍微清晰一些。 – initlaunch 2011-02-09 10:36:42
相关问题
- 1. 只允许旋转一个子图
- 2. 导航堆栈应该只包含一个视图
- 3. 只允许一个视图控制器自动旋转
- 4. 只允许一个uiviewcontroller旋转
- 5. 只允许一个控制器旋转
- 6. 如何只允许特定视图旋转? (iPhone)
- 7. 管理堆栈上的导航视图
- 8. 只在导航堆栈内的一个视图中隐藏标签栏
- 9. MvvMCross导航回多个视图模型/截断导航堆栈
- 10. 在导航堆栈上推视图
- 11. 打开导航堆栈外的另一个视图
- 12. Xamarin.Forms棱镜从导航堆栈删除视图堆栈
- 13. 只允许在标签栏设置旋转几个一个视图
- 14. 如何从导航堆栈中删除所有视图?
- 15. 如何旋转控制器中不允许旋转其界面的视图?
- 16. 如何mentain导航堆栈中的HTML
- 17. 隐藏导航控制器堆栈中的一个导航栏
- 18. 只有顶端的UIViewController是在旋转,其他导航堆栈上不
- 19. 转到导航堆栈中的前一个控制器(Swift)
- 20. LinearLayout只允许添加一个视图
- 21. 防止旋转的UIView子视图,允许旋转同级子视图
- 22. PushViewController导航到下一个堆栈
- 23. 将视图控制器放到导航堆栈中导致SIGABRT
- 24. 从导航堆栈
- 25. 导航堆栈在iPhone中
- 26. iPad,主视图中的导航堆栈,在主视图中选择一个项目并更新详细视图
- 27. 无法旋转只有一个视图
- 28. 在哪里设置导航堆栈中的视图控制器导航项目
- 29. 重定向到导航堆栈中的新视图控制器
- 30. 访问导航堆栈中的当前视图控制器
我不明白为什么Cocoa Touch在所有的自动交易业务中都走上了这么长的路,但却没有考虑到这种简单而且非常常见的情况。为了把它放在那里+1。 – epologee 2011-02-06 18:28:14