由于某种原因,这个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)
我通过添加指定的高度等来尝试变体,但似乎都没有效果。
答案 0 :(得分:1)
由于所有视图都是垂直锚定的,因此自动布局必须放宽至少一个约束,以便根据您的设备大小显示它们。 它不知道你最好在底部留下更多的空隙,所以你必须指定它。 尝试为约束分配较低的优先级,该约束将最后一个UILabel附加到视图控制器的底部。 这是一个指定优先级的示例:
NSDictionary *metrics = @{@"lowPriority":@(UILayoutPriorityDefaultLow)};
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|-30.0@lowPriority-[label]" options:0 metrics:metrics views:views];