0

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

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

有人对此有解决方案吗?提前致谢!

4

2 回答 2

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而不是删除它,它仍然会在没有人工干预的情况下获取事件。

于 2012-12-29T18:40:18.183 回答
0

让我猜猜你的问题。你想根据方向显示不同的 UIView ,对吗?

这是关于更新您viewController2以根据方向加载笔尖。您可以根据方向制作横向和纵向笔尖以支持您的不同 UI。试着从这个答案看

希望对你有帮助

于 2012-12-29T18:31:15.380 回答