好的,我有两个复杂的(UI-wise)UIViewControllers。他们在他们之间共享一个[超级]视图控制器。
一些子视图(按钮,标签,uiviews)将根据一系列远程事件显示和消失。
我想做的是(好吧,已经有),在我的一个故事板中设计UI,然后在viewWillLayoutSubviews或viewDidLayoutSubviews中,最初从视图中删除一些视觉元素。
但是,稍后将在viewcontroller的生命周期中再次添加这些内容。
那么,我怎样才能设计我的视图,最初是[subview removeFromSuperview];然后使用我在设计期间添加的约束
添加这些元素另外,如果我错了,请纠正我,但是因为我将要删除动画和addSubview,所以我必须让每个IBOutlets都强大(否则它们会在removeFromSubview之后丢失,对吧? )
无论如何,任何帮助/指针都表示赞赏。
答案 0 :(得分:1)
您必须通过循环遍历superview的约束(以及您正在删除的视图的约束,如果它们具有大小限制)来手动保存约束。你可以这样做,
-(void)saveConstraintsForView:(UIView *) viewToRemove {
for (NSLayoutConstraint *con in self.view.constraints) {
if ([con.firstItem isEqual:viewToRemove] || [con.secondItem isEqual:viewToRemove]) {
[self.constraintArray addObject:con];
}
}
}
而且,是的,视图的IBOutlets必须很强大,以便在从超级视图中删除它们时不会被取消分配。