2012-12-29 98 views
0

我的viewController1有一个子视图控制器(viewController2)。 viewController2.viewviewController1的观点的子视图。在用户的操作中,我从它的超级视图中删除viewController2的视图。过了一段时间,我不得不再次添加它作为子视图。设备方向更改问题

问题是,如果用户旋转设备,而viewController2不可见,在将其再次添加到viewController1的视图后,它是框架,并且它的子视图被放置为设备仍处于旧方向。即使是viewController2.view.frame也有高度和互换。

有没有人有解决这个问题?提前致谢!

回答

2

看起来没有看到你的代码,我猜你保持一个参考视图控制器2,即使它是不可见的。在这种情况下,你需要将视图旋转事件转发到控制器,以便它知道像这样旋转(执行此操作,你要转发每个事件):

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 
{ 
    [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; 

    // Forward to view controller 2 if it is not displayed 
    if (!viewController2.view) { 
     [viewController2 willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; 
    } 
} 

更好的设计可能是只需将视图控制器2的视图设置为hidden而不是将其删除,它仍然会在没有手动干预的情况下获取事件。

+0

谢谢,它完成了这项工作。出于好奇,我如何将视图旋转事件转发给viewController2(是的,我有一个引用它)? – Levi

+0

我为你增加了一个例子。 – lnafziger

0

让我猜你的问题。你想在方向上显示不同的UIView基础吗?

这是关于更新您的viewController2加载方向的笔尖基地。由于方向的原因,您可以使横向和纵向笔尖支持您的不同用户界面。尝试从这个Answer

希望它可以帮助你

+0

不,那不是。当用户旋转设备时,我有一个不在屏幕上的VC。当它出现时,它的行为就像它将在旧的方向(当它消失时) – Levi