一个 iOS 应用程序是否可以有多个 window?
Is it possible that an iOS application can have more than one window?
我在面试中被问过很多次这个问题,到处都找不到合适的地方answer.So最后在这里发布这个问题。
当然可以有多个windows。只是,一次只能显示一个,那就是keyWindow
。您可以将多个 windows 存储在数组或其他任何内容中,并在您想要显示它们时将它们设为 keyWindow
。
而且,是的,阅读@Mannopson 建议的文档,它非常有用。
你可以通过这个。
是的,您可以有多个 windows。一个键 window 是接收用户输入的键。
从 Rob 的回答开始,我试了一下,想为其他试图获取有关此主题的信息的人写下一些笔记:
- 再添加一个UIWindow完全不是问题。只需创建一个
并使KeyAndVisible。完毕。
- 通过制作另一个 window 来删除它
可见,然后释放你不再需要的那个。
- 即"key"的window接收所有的键盘输入
- UIWindow 涵盖了一切,甚至模态框、弹出窗口等。太棒了!
- UIWindow 始终隐式纵向显示。它不旋转。
- 您必须向新的 window 的根控制器添加一个控制器并让它处理旋转。
- (和主window一样)window的等级决定
"high" 它是如何显示的。将其设置为 UIWindowLevelStatusBar 以使其覆盖所有内容。
- 将其隐藏 属性 设置为 NO。第二个
UIWindow 可用于在屏幕上显示浮动在所有内容之上的视图。无需创建虚拟控制器,只是将其嵌入 UIPopoverController。
- 它对于 iPhone 没有弹出控制器但您可能想模仿类似的东西的地方特别有用。
- 是的,它当然解决了我的问题:如果
该应用程序退出激活,在任何内容上添加一个封面 window
当前显示为防止 iOS 截取您的屏幕截图
应用的当前内容。
一般一个应用只需要1个UIWindow,但还是有一些场景需要在一个应用中使用多个UIWindow。
例如,您希望在系统 AlertViews 顶部显示一个视图,或者可以使用默认键盘。
UIWindows 是特殊的 UIView,其显示顺序由 .windowLevel 属性.
控制。
您不需要添加新的 UIWindow 作为任何视图的子视图。您可以简单地创建一个新的 UIWindow 并根据您给它的级别调用 window setHidden:NO 或 window makeKeyAndVisible。
定义了三个默认 window 枚举级别:
- UIWindowLevelNormal
- UIWindowLevelStatusBar
- UIWindowLevelAlert
我在面试中被问过很多次这个问题,到处都找不到合适的地方answer.So最后在这里发布这个问题。
当然可以有多个windows。只是,一次只能显示一个,那就是keyWindow
。您可以将多个 windows 存储在数组或其他任何内容中,并在您想要显示它们时将它们设为 keyWindow
。
而且,是的,阅读@Mannopson 建议的文档,它非常有用。
你可以通过这个。
是的,您可以有多个 windows。一个键 window 是接收用户输入的键。
从 Rob 的回答开始,我试了一下,想为其他试图获取有关此主题的信息的人写下一些笔记:
- 再添加一个UIWindow完全不是问题。只需创建一个 并使KeyAndVisible。完毕。
- 通过制作另一个 window 来删除它 可见,然后释放你不再需要的那个。
- 即"key"的window接收所有的键盘输入
- UIWindow 涵盖了一切,甚至模态框、弹出窗口等。太棒了!
- UIWindow 始终隐式纵向显示。它不旋转。
- 您必须向新的 window 的根控制器添加一个控制器并让它处理旋转。
- (和主window一样)window的等级决定 "high" 它是如何显示的。将其设置为 UIWindowLevelStatusBar 以使其覆盖所有内容。
- 将其隐藏 属性 设置为 NO。第二个 UIWindow 可用于在屏幕上显示浮动在所有内容之上的视图。无需创建虚拟控制器,只是将其嵌入 UIPopoverController。
- 它对于 iPhone 没有弹出控制器但您可能想模仿类似的东西的地方特别有用。
- 是的,它当然解决了我的问题:如果 该应用程序退出激活,在任何内容上添加一个封面 window 当前显示为防止 iOS 截取您的屏幕截图 应用的当前内容。
一般一个应用只需要1个UIWindow,但还是有一些场景需要在一个应用中使用多个UIWindow。
例如,您希望在系统 AlertViews 顶部显示一个视图,或者可以使用默认键盘。
UIWindows 是特殊的 UIView,其显示顺序由 .windowLevel 属性.
控制。您不需要添加新的 UIWindow 作为任何视图的子视图。您可以简单地创建一个新的 UIWindow 并根据您给它的级别调用 window setHidden:NO 或 window makeKeyAndVisible。
定义了三个默认 window 枚举级别:
- UIWindowLevelNormal
- UIWindowLevelStatusBar
- UIWindowLevelAlert