0

出于某种原因,这个 VLF 代码..:

    // Label Constraints
    var allConstraints = [NSLayoutConstraint]()
    let views = ["chapterVerseLabel" : chapterVerseLabel, "sanskritLabel" : sanskritLabel, "englishLabel" : englishLabel, "translationLabel" : translationLabel, "commentaryLabel" : commentaryLabel]
    allConstraints += NSLayoutConstraint.constraintsWithVisualFormat("V:|-[chapterVerseLabel]-[sanskritLabel]-[englishLabel]-[translationLabel]-[commentaryLabel]-|", options: [], metrics: nil, views: views)
    allConstraints += NSLayoutConstraint.constraintsWithVisualFormat("H:|-15-[chapterVerseLabel]-15-|", options: [], metrics: nil, views: views)
    allConstraints += NSLayoutConstraint.constraintsWithVisualFormat("H:|-15-[sanskritLabel]-15-|", options: [], metrics: nil, views: views)
    allConstraints += NSLayoutConstraint.constraintsWithVisualFormat("H:|-15-[englishLabel]-15-|", options: [], metrics: nil, views: views)
    allConstraints += NSLayoutConstraint.constraintsWithVisualFormat("H:|-15-[translationLabel]-15-|", options: [], metrics: nil, views: views)
    allConstraints += NSLayoutConstraint.constraintsWithVisualFormat("H:|-15-[commentaryLabel]-15-|", options: [], metrics: nil, views: views)
    NSLayoutConstraint.activateConstraints(allConstraints)

正在生产这个:

在此处输入图像描述

我似乎无法理解的是为什么第一个对象之间存在巨大差距chapterVerseLabel。理想情况下,我希望将对象堆叠在另一个之上。可能之间有 10pt 的差距。这就是我认为这条线会做的事情:

allConstraints += NSLayoutConstraint.constraintsWithVisualFormat("V:|-[chapterVerseLabel]-[sanskritLabel]-[englishLabel]-[translationLabel]-[commentaryLabel]-|", options: [], metrics: nil, views: views)

我也通过添加指定的高度等尝试了变化,但似乎没有一个工作。

4

1 回答 1

1

由于您的所有视图都是垂直锚定的,因此自动布局必须至少放宽一个约束,以便根据您的设备尺寸显示它们。它不知道对你来说最好在底部留下更多的空隙,所以你必须指定它。尝试为将最后一个 UILabel 附加到视图控制器底部的约束分配较低的优先级。这是一个指定优先级的示例:

NSDictionary *metrics = @{@"lowPriority":@(UILayoutPriorityDefaultLow)};
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|-30.0@lowPriority-[label]" options:0 metrics:metrics views:views];
于 2016-03-12T18:36:51.003 回答