2016-11-27 74 views
0

我正在開發應用程序並決定使用UIScrollView。我使用Cartography來設置UIScrollView中的元素約束。UIScrollView contentSize使用製圖高度

我的問題是:在製圖上,我們可以通過element.bottom得到元素的底部位置,有沒有辦法使用這個位置來設置UIScrollView contentSize的高度?我知道最後一個元素是什麼。

+0

事實上,這比我想象的要簡單。我只是設置view.bottom == view.superview! 。底部 –

回答

0

根據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])) 
1

當您使用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。

相關問題