使用autolayout在元素之间添加UI元素

时间:2014-06-11 11:08:33

标签: ios objective-c xcode uiview nsautolayout

我有两个使用autolayout的UIViews。所有约束都在xib中定义。我们如何使用autolayout在视图1和视图2之间添加另一个视图,没有任何冲突。 enter image description here

1 个答案:

答案 0 :(得分:1)

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

    // 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];

如果要将视图设置为动画,则除了仅在动画块中放置最后一行之外,您将要执行所有操作。您可能还想为视图设置起始帧,否则默认情况下它将从左上角设置动画。