您已在滚动视图及其超级视图之间添加了约束。这些约束决定了滚动视图的框架。你可以把滚动视图想象成一个窗口,通过它你可以看到后面的内容。框架的大小正好是窗户的大小。当然,您可以滑动窗口,这样您就可以看到部分内容。
现在您已经知道了窗口的大小,但您还需要告诉 Xcode 内容的大小。如果你只是说把所有东西都放在中间而不告诉宽度,Xcode怎么知道中间在哪里?
因此,您必须告诉宽度(以及高度)。让我们考虑一个简单的示例,如何将单个标签置于滚动视图的中心。
您应该首先将滚动视图的边缘固定到其超级视图,就像您所做的那样。之后,您应该在标签边缘和滚动视图边缘之间添加约束,此外,您还应该添加标签的宽度和高度约束。
前导空格、尾随空格和宽度一起给出内容的宽度,而顶部空间、底部空间和高度一起给出内容的高度。
|---前导空格---|标签宽度|---尾随空格---|
|---------- 滚动视图的内容 -------------|
但是您可能希望将内容视图的宽度设置为与屏幕的宽度相同,那么您需要进行一些编程。在代码中设置插座属性
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *trailingSpace;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *leadingSpace;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *width;
In your viewWillLayoutSubviews
do this
CGFloat contentWidth = self.view.frame.size.width;
CGFloat horiPadding = (contentWidth - self.width.constant) / 2;
_trailingSpace.constant = horiPadding;
_leadingSpace.constant = horiPadding;
现在标签位于滚动视图的水平中心!您的滚动视图已经知道其内容,因此您不需要为滚动视图中添加的任何其他视图执行此操作:您只需添加中心约束即可。
您也可以对高度执行相同的操作。