使用制图的 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]))
我正在开发应用程序并决定使用 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]))