1

当屏幕从纵向旋转到横向时,将新 UIView 放置在视图堆栈顶部的应用程序 UIWindow 范围内的最安全和最有效的方法是什么?此外,当从横向返回到纵向时,要删除此子视图。

基本上,该应用程序的创建大部分是:

-UI窗口:

--UIView

---所有子视图(包括一个tabview控制器)

我想创建:

-UI窗口:

--UIView(新的,要放在上面)

--UIView

---所有子视图(并由此处的视图控制器触发)

这是错的吗?令人惊讶的是,很少有文档可以帮助做到这一点。

4

3 回答 3

1

如果您创建一个视图控制器来保存所有子视图,您可以使用将为您调用的旋转函数:

willRotateToInterfaceOrientation:duration: 和 didRotateFromInterfaceOrientation:

所以假设你使用你检查的 didRotateFromInterfaceOrientation

if(UIInterfaceOrientationIsLandscape(orientation))
{
    [yourView removeFromSuperView];
}
else
{
    [self.view addSubView: yourView];
}
于 2012-05-03T17:08:20.133 回答
1

在这里查看我的答案:https ://stackoverflow.com/a/4960988/202451

它应该让你更接近做这样的自定义事情

于 2013-02-06T18:15:28.477 回答
0

我找到了一个可行的解决方案。你能提供一个更好的吗?

    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];
于 2012-05-17T18:08:52.557 回答