NBJMergeLayout-ObjC 1.1

NBJMergeLayout-ObjC 1.1

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最新发布2015 年 5 月

Brentley Jones 维护。



从 Nib 视图层次结构中移除不必要的视图

NBJMergeLayout 是一个视图,当添加到一个视图中时,会将所有的子视图添加到该视图中,并移除自己。

目的

NBJMergeLayout 视图作为 Nib 的根视图,并且该 Nib 被加载为自定义视图或控件的根视图时(请参见 NJBNibBasedView 以轻松完成此操作),其强大的功能就会显现出来。在这种情况下,它会从生成的视图层次结构中移除一个不必要的视图。

工作原理

NBJMergeLayout 视图被添加到一个视图(UIKit 的 didMoveToSuperview 和 AppKit 的 viewDidMoveToSuperview)中时,它执行以下三个操作:

  1. 将所有自己的 Autolayout 约束重新分配给父视图,更改对自己本身的引用到父视图。
  2. 将所有子视图重新分配给父视图。
  3. 从父视图中移除自己。

最终结果是,所有 NBJMergeLayout 视图的子视图都成为附加到其上的视图的子视图,它们拥有与之前相同的约束(但此时引用新的父视图),而 NBJMergeLayout 视图不再是视图层次结构的一部分。

已知问题

NBJMergeLayout 将更新其父视图中引用其约束的任何 IBOutlets。这是必需的,因为在上面的重新分配步骤中会创建新的约束。这几乎涵盖了您可能会在日常使用中遇到的所有情况。引用这些约束的任何其他 IBOutlets 都不会更新。