优点,问题,添加另一个UIWindow到iOS应用程序的例子?
最近我一直在想,一个iOS应用程序只有一个UIWindow
的事实。 创build另一个UIWindow
并将其放置在屏幕上似乎没有问题。
我的问题有点含糊,但我感兴趣的是:
- 我可以用第二个
UIWindow
实现其他方式无法完成的事情? - 使用多个
UIWindow
实例时会出现什么问题? - 我看到人们使用第二个
UIWindow
在iPhone上显示像视图一样的popup窗口。 这是做这件事的好方法吗? 为什么? 为什么不? - 还有其他的例子,让另一个
UIWindow
变得非常有意义吗?
这不是我错过了什么。 我从来没有觉得需要创build另一个UIWindow
实例,但也许它会允许做我不知道的惊人的事情! 🙂
我希望它可以帮助我解决这个问题:我需要添加一个“覆盖视图”,无论目前显示。 如果已经存在一个或多个模态控制器,它也应该工作。 如果我添加一个UIView
到根控制器的视图,模式控制器坐在上面,所以popup控制器。 如果我以模态方式呈现封面视图,并且已经有模式控制器,则只覆盖屏幕的一部分。
UIWindow
可以像系统键盘一样浮在其他UI元素之上。
要解决您的最后一段:使用与主窗口相同的框架来制作一个UIWindow
。 将其windowLevel
属性设置为UIWindowLevelStatusBar
。 将其hidden
属性设置为NO
。
从罗布的回答开始,我玩了一下,想写下一些笔记给其他人试图获得有关这个话题的信息:
- 添加另一个
UIWindow
并不是一个问题。 只需创build一个makeKeyAndVisible
。 完成。 - 通过使另一个窗口可见,将其删除,然后释放您不再需要的窗口。
- “键”的窗口接收所有的键盘input。
-
UIWindow
涵盖了一切,甚至莫代尔,popup等。太棒了! -
UIWindow
总是隐式的画像。 它没有旋转。 您将不得不添加一个控制器作为新窗口的根控制器,并让它处理旋转。 (就像主窗口一样) - 窗口的高度决定了显示“高”的程度。 将其设置为
UIWindowLevelStatusBar
以覆盖所有内容。 将其hidden
属性设置为NO。 - 第二个
UIWindow
可以用来在屏幕上显示浮动在一切之上的视图。UIPopoverController
创build一个虚拟控制器来embedded到UIPopoverController
。 - 它可以是特别有用的iPhone没有popup控制器,但你可能想模仿的东西。
- 是的,这当然解决了我的问题:如果应用程序停止激活,请在当前显示的任何内容上添加封面窗口,以防止iOS截取应用程序的当前内容。