9

我总是看到对应用程序“窗口”的引用,并且我看到 AppDelegates 通常有一个UIWindow名为“窗口”的属性。所以我只是想知道如何感知这个UIWindow物体。我看到它是 的子类UIView,所以我想从技术上讲它是一个 View 对吧?那么可以说它就像整个应用程序的 Superview 吗?另外,我何时以及为什么会提及它?它增加了什么价值?

我知道那里有很多问题,但只是一些整体背景UIWindow会很好。

4

3 回答 3

12

您可能想查看 iOS 的 View Programming Guide 中的About Windows and Views部分。

在 iOS 中,您使用窗口和视图在屏幕上呈现应用程序的内容。Windows 本身没有任何可见内容,但为应用程序的视图提供了一个基本容器。视图定义了您想要填充某些内容的窗口的一部分。例如,您可能有显示图像、文本、形状或它们的某种组合的视图。您还可以使用视图来组织和管理其他视图。

另请注意,iOS 应用程序通常只有一个窗口。一个例外是,如果应用程序在外部屏幕上显示内容。

于 2013-08-16T21:42:10.057 回答
1

UIWindow
屏幕上一个或多个视图的呈现由 UIWindow 对象协调。在 iOS 应用程序中通常只有一个窗口。同时查看多个。Windows 和 Views 都用于在屏幕上显示应用程序的内容。Windows 为应用程序的视图提供了一个基本容器,但没有任何可见内容。视图是窗口的一部分,您可以在其中填充一些内容。例如,您可能有显示图像、文本的视图。

问题卡住

于 2017-03-09T08:23:14.310 回答
0

Window 就像任何 iOS 应用程序的最顶层 UI 容器。它位于所有视图和视图控制器之上。

问我为什么需要它,我说它使 UI 结构在视图层次结构和事件处理方面更加清晰。例如,任何用户事件,当不被最内层视图处理时,如果层次结构中没有其他视图处理它,最终会沿着视图层次结构上升到窗口对象。

另一个例子是处理应用程序特定视图细节的窗口的 rootViewController。

一个应用程序将主要有一个窗口。但是我开发了一个使用共享框架进行用户身份验证的应用程序。在那里,我们有一个特定于该身份验证框架的单独窗口。你问为什么要分开窗口,我又来了,有两个重要的用例,

  1. 正如我所提到的,它是一个共享的身份验证框架。因此,不同的应用程序可以使用相同的框架进行用户身份验证,该框架使用自己的登录屏幕窗口等。
  2. 会话超时之后,无论用户当前在屏幕上做什么,都必须弹出登录屏幕。如果我们不使用单独的窗口,这可能会变得非常棘手。

我希望您在阅读这些示例后能够理解窗口的本质。

于 2020-08-17T07:05:29.043 回答