objective-c - 向 iOS 应用程序添加另一个 UIWindow 的优点、问题、示例?

标签 objective-c cocoa-touch uikit uiwindow

最近我一直在想,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/

相关文章:

ios - 仅当视频在我的应用程序 Swift UIKit 中取消静音时才停止其他应用程序的背景音乐

ios - 仍然没有收到来自 fabric for twitter 的电子邮件

ios - 在我的 UIView 中心设置圆圈

objective-c - 如何获得 Mac 音频电平?

ios - 单击导航栏按钮下方的区域时,将触发导航栏按钮单击事件。

ios - JavaScriptCore 除了 'hello, world' 之外不工作

ios - ABAddressBookRequestAccessWithCompletion 的最佳实践

ios - IOS 中的下拉列表问题

ios - 如何拍摄照片然后将 iOS 应用程序最小化?

ios - 如何模仿相机应用程序 - 覆盖方向变化动画?