设备方向更改问题

时间:2012-12-29 17:47:39

标签: ios uiviewcontroller

我的viewController1有一个子视图控制器(viewController2)。 viewController2.viewviewController1视图的子视图。在用户的操作中,我从其超级视图中删除了viewController2的视图。过了一会儿我不得不再次添加为子视图。

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

有没有人有解决方案?提前谢谢!

2 个答案:

答案 0 :(得分: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而不是删除它,它仍然可以在没有人工干预的情况下获取事件。

答案 1 :(得分:0)

让我猜你的问题。你想在方向上展示不同的UIView吗?对吗?

关于更新你的viewController2以根据方向加载nib。您可以使横向和纵向笔尖由于方向而支持您的不同UI。试着从这Answer

开始

希望它可以帮到你