当屏幕从纵向旋转到横向时,将新 UIView 放置在视图堆栈顶部的应用程序 UIWindow 范围内的最安全和最有效的方法是什么?此外,当从横向返回到纵向时,要删除此子视图。
基本上,该应用程序的创建大部分是:
-UI窗口:
--UIView
---所有子视图(包括一个tabview控制器)
我想创建:
-UI窗口:
--UIView(新的,要放在上面)
--UIView
---所有子视图(并由此处的视图控制器触发)
这是错的吗?令人惊讶的是,很少有文档可以帮助做到这一点。
当屏幕从纵向旋转到横向时,将新 UIView 放置在视图堆栈顶部的应用程序 UIWindow 范围内的最安全和最有效的方法是什么?此外,当从横向返回到纵向时,要删除此子视图。
基本上,该应用程序的创建大部分是:
-UI窗口:
--UIView
---所有子视图(包括一个tabview控制器)
我想创建:
-UI窗口:
--UIView(新的,要放在上面)
--UIView
---所有子视图(并由此处的视图控制器触发)
这是错的吗?令人惊讶的是,很少有文档可以帮助做到这一点。
如果您创建一个视图控制器来保存所有子视图,您可以使用将为您调用的旋转函数:
willRotateToInterfaceOrientation:duration: 和 didRotateFromInterfaceOrientation:
所以假设你使用你检查的 didRotateFromInterfaceOrientation
if(UIInterfaceOrientationIsLandscape(orientation))
{
[yourView removeFromSuperView];
}
else
{
[self.view addSubView: yourView];
}
在这里查看我的答案:https ://stackoverflow.com/a/4960988/202451
它应该让你更接近做这样的自定义事情
我找到了一个可行的解决方案。你能提供一个更好的吗?
ArtsDayAppDelegate *appDelegate = (ArtsDayAppDelegate*)[[UIApplication sharedApplication] delegate];
UIView *landscapeView;
if (!landscapeView) {
landscapeView = [[UIView alloc] initWithFrame: frame];
}
[landscapeView setBackgroundColor:[UIColor blackColor]];
..add various views..
[appDelegate.window.rootViewController.view addSubview:landscapeView];