1

我在情节提要中直接定义了 3 个不同的子视图,因此它们也有出口。所有这些子视图都意味着在不同时间占据屏幕上的相同坐标,在任何时候只有一个占据空间,因此看起来某些外观正在发生变化。我该怎么做呢?假设我还有一个枚举,它定义了我当前所处的状态,因此该位置显示了哪些子视图。

4

1 回答 1

2

两个基本选项:

  1. 继续将三个子视图添加到您的场景中。如果你这样做了,有几个技巧可以让你在 IB 中的生活更轻松:

    • 对于每个视图,转到最右侧面板中的“身份检查器”选项卡(第三个),展开“文档”部分,并为三个视图中的每一个赋予唯一的“标签”(不要与UILabel控件混淆; 这只是 IB 将在内部用于引用您的视图的标签或描述)。这样,当您浏览“文档大纲”中列出的控件树(显示在中心面板左侧的所有场景的列表)时,您将能够找出哪个是哪个。当您使用这些重叠的视图时,对这个“文档大纲”的强大掌握将使您的生活更加轻松。

    • 当您在场景中拥有三个视图时,您可能会发现将要处理的视图拖到三个视图列表的末尾(但与它的对等点处于同一级别)是最简单的。文件大纲”。然后,您可以编辑该子视图。当您对三个子视图进行 IB 工作时,重复该过程。

    • 如果需要,您可以为您的三个子视图创建一个出口集合。当您想对所有子视图执行某些操作时,这会更容易。当只处理三个时,也许不是很有用,但如果你有更多的子视图,集合会很有用。

    • 您可以为三个视图中的每一个定义唯一的UIView子类,这有助于使您的IBOutlet参考列表更加结构化。此外,任何特定于视图的 UI 逻辑都可以隔离到各个UIView子视图中。

    • 如果您使用这种技术,如果您计划在这三个子视图之间设置动画过渡,那么不只是将这三个子视图放在相关场景的顶层视图上实际上是非常有用的。在场景中定义三个子视图的尺寸,然后将您的三个子视图放在这个新的临时子视图中是非常有用的。这样,当您为更改设置动画时,您可以将动画限制在屏幕的那个部分。这种新的、临时UIView的通常称为容器视图,但不应与您将在 IB 中看到的 iOS 6 容器视图混淆,后者与下面定义的下一个技术相关。

  2. 虽然所有这些技巧都可以使单个场景中三组重叠视图的操作和管理变得更容易一些,但我实际上认为自定义容器视图控制器是最好的方法。一个场景用于父场景/视图控制器,一个单独的视图控制器和 IB 场景用于三个不同的子视图中的每一个。它需要一些额外的代码(不难,但在你第一次做的时候有点陌生),但是你的代码和 IB 场景很好地隔离了。在架构上,这是最优雅的方法,恕我直言。如果你想这样做,你应该参考:

于 2013-04-17T03:00:21.287 回答