0

我正在开发应用程序并决定使用UIScrollView. 我正在使用制图来设置 UIScrollView 内的元素约束。

我的问题是:在制图上,我们可以得到元素的底部位置element.bottom,有没有办法使用这个位置来设置 UIScrollView contentSize 高度?我知道最后一个元素是什么。

4

2 回答 2

1

当您使用 AutoLayout 时,scrollView 的 contentSize 将自行计算。即:它将具有与其包含的元素的总高度相对应的高度。您应该将底部元素的底部绑定到滚动视图的底部。

| - [view1 (100)] - [view2 (150)] - [view3 (100)] - |

假设您有这个,每个 - 表示水平间距约束为 0,而 | scrollView 的边框,因此,scrollView 的 contentSize 将被计算为匹配它包含的元素的总宽度,并且为 350。

您可以查看 Apple 文档的这一部分,了解如何使用 scrollViews 和 AutoLayout:https ://developer.apple.com/library/content/technotes/tn2154/_index.html

请记住,在使用 AutoLayout 时,您不应该手动设置 scrollView 的 contentSize。

于 2016-11-27T14:22:26.967 回答
0

根据Github 制图项目的这个答案,这是不可能的。

不确定您的意思,但 view.bottom 不是一个值,而是一个符号变量(毕竟,找出值是 Auto Layout 的工作)。

现在最让我印象深刻的是,如果我手动设置约束,而不使用制图,这可以正常工作。

self.view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[v0(\(getScreenSize().width * 0.68))]-25-[v1][v2(\(textViewHeight))][v3(44)]-20-[v4(32)][v5(300)]|", options: NSLayoutFormatOptions(), metrics: nil, views: ["v0": imageView, "v1": titleTextView, "v2": textView, "v3": stackView, "v4": galleryHeader, "v5": collectionView]))
于 2016-11-27T16:55:31.040 回答