我正在为iOS 6更新我的应用,并且对自动旋转的更改存在问题。我的应用程序有一堆视图控制器,所有这些应该只支持纵向布局,除了1应该支持所有3个方向,除了颠倒。
如果我将application:supportedInterfaceOrientationsForWindow:
方法添加到app委托,我是否必须在那里添加条件以检查我是否显示了我希望能够旋转的VC?
文档指出,如果我在VC上实现supportedInterfaceOrientations
,它应该覆盖应用委托方法,但事实并非如此。我在子VC上的方法中有一个日志语句,它在VC加载时被调用一次但在我旋转设备时没有被调用,但是app委托中的方法是。
如果我从应用委托中完全删除该方法,我的VC的方向似乎完全取决于我的应用支持的界面方向设置。这当然似乎是由于方法supportedInterfaceOrientations
在创建VC时被调用一次,但从未在设备旋转时被调用。
有没有人有任何想法或建议?非常感谢。
答案 0 :(得分:13)
替换
[window addSubview:viewController.view];
同
window.rootViewController = viewController;
答案 1 :(得分:3)
您还需要覆盖 - (BOOL)shouldAutorotate并返回“YES”。这使得您可以使用“supportedInterfaceOrientations”声明VC支持的方向,然后在轮换时应调用“shouldAutorotate”。如果您有任何导航控制器或tabbar,您可能需要将它们子类化以在其中执行相同的操作。我最近自己有这个问题。
答案 2 :(得分:0)
试试这个......
-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration
{
if (UIInterfaceOrientationIsLandscape(interfaceOrientation))
{
// here to implement landscope code
}
else
{
// here to implement setframePortrait
}
}