我的viewController1
有一个子视图控制器(viewController2
)。 viewController2.view
是viewController1
视图的子视图。在用户的操作中,我从其超级视图中删除了viewController2
的视图。过了一会儿我不得不再次添加为子视图。
问题在于,如果用户在viewController2
不可见的情况下旋转设备,则在将其再次添加到viewController1的视图后,它的框架和子视图将被放置为设备仍处于旧方向。即使viewController2.view.frame
具有高度也可以互换。
有没有人有解决方案?提前谢谢!
答案 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
希望它可以帮到你