我有两个使用autolayout的UIViews。所有约束均在xib中定义。我们如何使用自动布局在视图1和视图2之间添加另一个视图,而不会发生任何冲突。

最佳答案

您将需要降级视图1和视图2之间的约束。要么将其设置为低优先级,要么将equals常数更改为小于或等于。或者,您可以保存对该约束的出口引用,并在添加新视图时将其删除。

    // Add the view as subview
    [self.view addSubview:view3];
    [view3 setTranslatesAutoresizingMasksIntoConstraints:NO]

    // Make the constraints
    NSDictionary *views = NSDictionaryOfVariableBindings(view1, view2, view3);
    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[view1]-10-[view3]-10-[view2]" options:0 metrics:nil views:views]];
    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[view3]-|" options:0 metrics:nil views:views]];

    // Tell view to update
    [self.view layoutIfNeeded];


如果要对视图进行动画处理,除了将最后一行放在动画块中之外,您将希望执行所有相同的操作。您可能还需要为视图设置一个起始帧,否则默认情况下它将从左上角进行动画处理。

关于ios - 使用自动布局在元素之间添加UI元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24161404/

10-14 15:49