将子视图与另一个太阳视图交换时,是否需要重新应用约束?是否需要删除适用于已删除视图的约束?
还是应该自动持续存在?
约束是视图的“一部分”。当您删除视图(使用removeFromSuperview
)时,它们会保留在该视图中,前提是视图本身没有被释放。然后,您可以安全地再次添加视图,约束将负责定位。
将其与视图的框架进行比较:即使您从其父视图中删除视图,框架仍将保持不变。当您将视图添加回子视图时,它将处于与以前完全相同的位置。
因此,回答您的问题:当您将一个视图与另一个视图“交换”时,新视图将没有任何约束。这行不通:
[newView addConstraints:[oldView constraints]];
这将导致“视图不在层次结构中”错误,因为约束绑定到oldView
.