故事板,删除子视图和&稍后再次添加它们并保留设计约束

时间:2014-06-16 16:50:24

标签: ios constraints uistoryboard subview

好的,我有两个复杂的(UI-wise)UIViewControllers。他们在他们之间共享一个[超级]视图控制器。

一些子视图(按钮,标签,uiviews)将根据一系列远程事件显示和消失。

我想做的是(好吧,已经有),在我的一个故事板中设计UI,然后在viewWillLayoutSubviews或viewDidLayoutSubviews中,最初从视图中删除一些视觉元素。

但是,稍后将在viewcontroller的生命周期中再次添加这些内容。

那么,我怎样才能设计我的视图,最初是[subview removeFromSuperview];然后使用我在设计期间添加的约束

添加这些元素

另外,如果我错了,请纠正我,但是因为我将要删除动画和addSubview,所以我必须让每个IBOutlets都强大(否则它们会在removeFromSubview之后丢失,对吧? )

无论如何,任何帮助/指针都表示赞赏。

1 个答案:

答案 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必须很强大,以便在从超级视图中删除它们时不会被取消分配。