0

我有一個視圖控制器,它將以模態方式呈現,並在該VC中有一個滾動視圖。但是,當我的segue是'模態存在'類型時,添加scrollview通常不起作用。我在某處讀到我必須將我的scrollview放在另一個視圖中才能使用。所以這是我的看法層次:Scrollview在'現在的模態'視圖控制器不工作

這些都是我的視圖中的制約因素:

滾動型約束:

ViewB約束:

而在ViewB中,我有另一個視圖,我已經給出了一個頂端,左邊的&右邊限制爲0的超級視圖。我已經在代碼中設置了這個:

override func viewDidLayoutSubviews() 
{ 
    viewB.frame.size.height = 2000 
    scrollView.contentSize = viewB.frame.size 
} 

但是,滾動視圖仍然不滾動。感謝任何能夠幫助你的人...一直困擾着這個。

回答

1

問題是,您已將ViewB約束條件賦予其包含滾動視圖。這很好,如果你打算採取這種方法(我更喜歡);但這意味着滾動視圖的contentSize由ViewB的大小決定,而不是由contentSize屬性確定。因此,你的代碼是無用的,你的第一步應該是把它扔掉。

然後,什麼 ViewB's size?不幸的是,它與滾動視圖的大小相同,因爲您已經給出ViewB寬度和高度約束,使其與滾動視圖的大小相同。因此沒有可滾動的東西。

解決的辦法是通過約束來實現您在代碼中所做的事情,即給ViewB一個固定爲2000的高度約束,而不是您給出的高度約束。

+0

順便說一句,你的屏幕截圖顯示紅色箭頭的事實意味着你的約束是不好的。在做其他事情之前,你需要解決這個問題。繼續使用錯誤的約束是毫無意義的,因爲在運行時您不可能獲得有意義的接口。此外,我現在可以告訴你,看看你的截圖,你有一個非常不好的習慣,即過度決定你的限制,這會讓你陷入嚴重的困境。 – matt

+0

首先感謝您的幫助馬特。而且你是對的,我確實有一個習慣,即過度決定我的約束。因爲滾動視圖,我總是碰巧有一個錯誤。我的滾動視圖有一個不固定的高度,所以我通常會將scrollView固定到頂部,左側,右側,底部。但是,然後xCode拋出一個錯誤,我需要在scrollview中指定視圖的寬度和高度。而且高度是不固定的,所以我將它設置在代碼中。在代碼/完全在故事板中完成它是一種更好的方法嗎? – Moo33

+0

正如我在回答中所說的,我喜歡通過故事板中的約束來做到這一點,就像你正在做的那樣。 – matt

相關問題