最近我一直在想,iOS 应用只有一个 UIWindow
。
创建另一个 UIWindow
并将其放在屏幕上似乎不是问题。
我的问题有点含糊,但我很感兴趣:
- 我可以通过第二个
UIWindow
实现哪些其他方式无法实现的目标? - 使用多个
UIWindow
实例时会出现什么问题? - 我看到人们使用第二个
UIWindow
在 iPhone 上显示类似弹出窗口的 View 。这是一个好方法吗?为什么?为什么不呢? - 是否还有其他示例表明拥有另一个
UIWindow
非常有意义?
这并不是我错过了什么。我从来没有觉得需要创建另一个 UIWindow
实例,但也许它可以做一些我不知道的惊人事情! :-)
我希望它可以帮助我解决这个问题:
我需要在当前显示的任何内容上添加“封面 View ”。如果已经存在一个或多个模态 Controller ,它也应该工作。如果我将 UIView
添加到根 Controller 的 View 中,模态 Controller 位于顶部,弹出框 Controller 也是如此。
如果我以模态方式呈现封面 View 并且已经有一个模态 Controller ,则只会覆盖屏幕的一部分。
最佳答案
从 Rob 的回答开始,我玩了一下,想为其他试图获取有关此主题的信息的人写一些笔记:
- 再添加一个
UIWindow
完全没有问题。只需创建一个并makeKeyAndVisible
。完成。 - 通过使另一个窗口可见来删除它,然后释放您不再需要的窗口。
- 作为“键”的窗口接收所有键盘输入。
UIWindow
涵盖了所有内容,甚至包括模态框、弹出框等。太棒了!UIWindow
总是隐含的纵向。它不旋转。您必须添加一个 Controller 作为新窗口的根 Controller 并让它处理旋转。 (就像主窗口一样)- 窗口的级别决定了它显示的“高度”。将其设置为
UIWindowLevelStatusBar
以使其涵盖所有内容。将其hidden
属性设置为 NO。 - 第二个
UIWindow
可用于在屏幕上显示 float 在所有内容之上的 View 。无需创建虚拟 Controller ,只是将其嵌入到UIPopoverController
中。 - 它在没有弹出框 Controller 但您可能想模仿类似的东西的 iPhone 上特别有用。
- 是的,它当然解决了我的问题:如果应用退出激活,请在当前显示的内容上添加一个覆盖窗口,以防止 iOS 截取应用的当前内容。
关于objective-c - 向 iOS 应用程序添加另一个 UIWindow 的优点、问题、示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8232398/