【问题标题】:The difference between a UIWindow and a UIViewUIWindow 和 UIView 的区别
【发布时间】:2011-11-22 21:22:06
【问题描述】:

创建一个空白的xib文件后,似乎我们可以拖动一个UIWindow或UIView来覆盖整个屏幕。我的问题是两者之间的实际区别是什么?在什么情况下我们应该使用一个而不是另一个?

【问题讨论】:

  • 如何将 UIWindow 拖到空白的.xib 文件中?我无法在 Xcode 中这样做。

标签: iphone xcode cocoa-touch


【解决方案1】:

Windows 本身没有任何可见内容,但为您的应用程序视图提供了一个基本容器。视图定义了您想要填充某些内容的窗口的一部分。通常,iOS 应用程序中只有一个窗口。

About Windows and Views

【讨论】:

  • 另一种思考方式是窗口永远不能有超级视图。它位于视图层次结构的顶部。
  • 从技术上讲,一个窗口不会覆盖整个屏幕。窗口的 view 确实如此。因此,将UIView 视为屏幕的控制部分:对其进行绘制等等。窗口只是一个容器。
  • 窗口确实覆盖整个屏幕(通常),窗口是视图层次结构中的根视图(它是 UIView 的子类)。文档:“在 Interface Builder 中创建窗口时,建议您在属性检查器中启用 Full Screen at Launch 选项。如果未启用此选项并且您的窗口大小不适合目标设备,触摸事件可能不会由您的某些视图接收。这是因为窗口不会接收超出其边界的触摸事件,并且默认情况下视图不会被裁剪到窗口的边界。"
  • @beryllium 正如您所说,“Windows 没有任何可见内容”。那么这是什么意思呢? self.window.backgroundColor = [UIColor lightGrayColor];它如何让自己的东西显示出来?
【解决方案2】:

这不是非此即彼的事情。您的应用必须有一个 UIWindow 实例,该实例是您提供的 UIView 实例的容器。

应用可以从 nib 文件加载 UIWindow 实例,也可以通过编程方式创建它。查看一些示例代码以了解它是如何完成的。

【讨论】:

  • 谢谢你的回答,但是每个项目应该只有一个UIWindow是真的吗?
  • @Stanley 通常是这样,是的。但是,这不是强制性的,而是常见的。
  • 有两个的情况是,例如,当您想要处理外部屏幕时。
猜你喜欢
  • 2014-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-14
  • 1970-01-01
  • 2010-12-03
  • 2011-06-07
相关资源
最近更新 更多