我正在开发app并决定使用UIScrollView
。我正在使用Cartography在UIScrollView中设置元素约束。
我的问题是:在制图上,我们可以使用element.bottom
获取元素的底部位置,有没有办法使用此位置来设置UIScrollView contentSize高度?我知道最后一个元素是什么。
答案 0 :(得分:1)
使用AutoLayout时,scrollView的contentSize将自行计算。即:它将具有与其包含的元素的总高度相对应的高度。您应该将底部元素的底部绑定到scrollView的底部。
| - [view1 (100)] - [view2 (150)] - [view3 (100)] - |
让我们说你有这个,每个 - 表示水平间距约束0和|因此,scrollView的边框将被计算以匹配它包含的元素的总宽度,并且为350.
您可以查看Apple文档的这一部分,了解如何使用scrollViews和AutoLayout:https://developer.apple.com/library/content/technotes/tn2154/_index.html
请记住,在使用AutoLayout时,不应手动设置scrollView的contentSize。
答案 1 :(得分:0)
根据Github制图项目中的这个answer,这是不可能的。
不确定你的意思,但是view.bottom不是一个值,而是一个变量符号(毕竟,它是自动布局的工作来计算出来的值)。
现在最令我震惊的是,如果我手动设置约束而不使用制图,这可以正常工作。
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]))