使用制图的 UIScrollView contentSize 高度

UIScrollView contentSize height using Cartography

我正在开发应用程序并决定使用 UIScrollView。我正在使用 Cartography 在 UIScrollView 中设置元素约束。

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

当您使用 AutoLayout 时,scrollView 的 contentSize 将自行计算。即:它的高度对应于它包含的元素的总高度。您应该只将 bottom 元素的底部绑定到 scrollView 的底部。

| - [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。

根据 Github 制图项目中的 answer,这是不可能的。

不太清楚你的意思,但是view.bottom不是一个值而是一个符号变量(毕竟,自动布局的工作是找出值)。

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

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]))