gpt4 book ai didi

ios - 使用自动布局时 UIScrollview 的中心内容

转载 作者:可可西里 更新时间:2023-11-01 03:30:35 28 4
gpt4 key购买 nike

我在我的项目中使用了自动布局,并且我有一个 ScrollView ,其中有一个按钮居中。我已经让 ScrollView 滚动,但没有占据整个屏幕。

我已尝试按照此处的教程进行操作:https://developer.apple.com/library/ios/technotes/tn2154/_index.html ,以及我在这里检查了一些类似的问题。问题是我希望 ScrollView 的内容居中,而不是固定在顶部/底部/左侧/右侧。

这是我的 View 层次结构:

enter image description here

你能帮帮我吗?

最佳答案

您在 ScrollView 和它的 super View 之间添加了约束。这些约束决定了 ScrollView 的框架。你可以把 ScrollView 想象成一个窗口,通过它你可以看到后面的内容。框架只是窗口的大小。当然,你也可以滑动窗口,让你看到部分内容。

现在您有了窗口的大小,但您还需要告诉 Xcode 内容的大小。如果你只是说把所有东西都放在中间而不告诉宽度,Xcode 怎么知道中间在哪里?

所以,你必须告诉宽度(以及高度)。让我们考虑一个简单的例子,如何在 ScrollView 中将单个标签居中。

enter image description here

您应该首先将 ScrollView 的边缘固定到其父 View ,就像您所做的那样。之后你应该在标签的边缘和 ScrollView 的边缘之间添加约束,此外,你还应该添加标签的with和高度约束。

前导空格、尾随空格和宽度一起给出了内容的宽度,而顶部空格、底部空格和高度一起给出了内容的高度。

|---前导空格---|标签宽度|---尾随空格---|

|------------ ScrollView 的内容------------|

但是您可能希望将内容 View 的 with 设置为与屏幕的 with 相等,那么您需要进行一些编程。在您的代码中设置 socket 属性

@property (weak, nonatomic) IBOutlet NSLayoutConstraint *trailingSpace;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *leadingSpace;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *width;

在您的 viewWillLayoutSubviews 中执行此操作

CGFloat contentWidth = self.view.frame.size.width;
CGFloat horiPadding = (contentWidth - self.width.constant) / 2;
_trailingSpace.constant = horiPadding;
_leadingSpace.constant = horiPadding;

现在标签位于 ScrollView 的水平中心!你的 ScrollView 已经知道它的内容,所以你不需要为你在 ScrollView 中添加的任何其他 View 执行此操作:你可以只添加中心约束。

你也可以对高度做同样的事情。

enter image description here

enter image description here

关于ios - 使用自动布局时 UIScrollview 的中心内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25021745/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com