从 Nib 视图层次结构中移除不必要的视图
NBJMergeLayout 是一个视图,当添加到一个视图中时,会将所有的子视图添加到该视图中,并移除自己。
当 NBJMergeLayout
视图作为 Nib 的根视图,并且该 Nib 被加载为自定义视图或控件的根视图时(请参见 NJBNibBasedView 以轻松完成此操作),其强大的功能就会显现出来。在这种情况下,它会从生成的视图层次结构中移除一个不必要的视图。
当 NBJMergeLayout
视图被添加到一个视图(UIKit 的 didMoveToSuperview
和 AppKit 的 viewDidMoveToSuperview
)中时,它执行以下三个操作:
最终结果是,所有 NBJMergeLayout
视图的子视图都成为附加到其上的视图的子视图,它们拥有与之前相同的约束(但此时引用新的父视图),而 NBJMergeLayout
视图不再是视图层次结构的一部分。
NBJMergeLayout
将更新其父视图中引用其约束的任何 IBOutlets。这是必需的,因为在上面的重新分配步骤中会创建新的约束。这几乎涵盖了您可能会在日常使用中遇到的所有情况。引用这些约束的任何其他 IBOutlets 都不会更新。