我正在開發應用程序並決定使用UIScrollView
。我使用Cartography來設置UIScrollView中的元素約束。UIScrollView contentSize使用製圖高度
我的問題是:在製圖上,我們可以通過element.bottom
得到元素的底部位置,有沒有辦法使用這個位置來設置UIScrollView contentSize的高度?我知道最後一個元素是什麼。
我正在開發應用程序並決定使用UIScrollView
。我使用Cartography來設置UIScrollView中的元素約束。UIScrollView contentSize使用製圖高度
我的問題是:在製圖上,我們可以通過element.bottom
得到元素的底部位置,有沒有辦法使用這個位置來設置UIScrollView contentSize的高度?我知道最後一個元素是什麼。
根據Github Cartography項目的這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]))
當您使用AutoLayout時,scrollView的contentSize將自行計算。即:它將具有與其包含的元素的總高度相對應的高度。您應該將底部元素的底部綁定到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。
事實上,這比我想象的要簡單。我只是設置view.bottom == view.superview! 。底部 –