2017-09-27 73 views
0

我正在使用以下代碼來限制視圖到父UIScrollView的左側和右側錨點。UIScrollView子視圖不擴展爲填充寬度(Autolayout)

儘管右側錨點和左側錨點被設置爲ScrollView的左側和右側錨點,但視圖不會展開以填充滾動視圖。

注意:此圖像中的灰色背景是UIScrollView的背景,所以我知道它適合於其父視圖。

代碼:

self.wtfView.translatesAutoresizingMaskIntoConstraints = false 
self.wtfView.backgroundColor = UIColor.orange 
self.wtfView.topAnchor.constraint(equalTo: self.passwordField.bottomAnchor, constant: 40.0).isActive = true 
self.wtfView.leftAnchor.constraint(equalTo: self.containerView.leftAnchor, constant: 40.0).isActive = true 
self.wtfView.rightAnchor.constraint(equalTo: self.containerView.rightAnchor, constant: 40.0).isActive = true 
self.wtfView.heightAnchor.constraint(equalToConstant: 50.0).isActive = true 
self.wtfView.bottomAnchor.constraint(equalTo: self.containerView.bottomAnchor, constant: 40.0).isActive = true 

https://imgur.com/a/U88iW

編輯: 下面的代碼工作正常,但我寧願使用左+右錨技術,以指定的寬度,而不是在一個寬度約束。這不應該是可能的嗎?

self.wtfView.translatesAutoresizingMaskIntoConstraints = false 
self.wtfView.backgroundColor = UIColor.orange 
self.wtfView.topAnchor.constraint(equalTo: self.passwordField.bottomAnchor, constant: 40.0).isActive = true 
self.wtfView.leftAnchor.constraint(equalTo: self.containerView.leftAnchor, constant: 40.0).isActive = true 
self.wtfView.widthAnchor.constraint(equalTo: self.containerView.widthAnchor, constant: -80.0).isActive = true //THE DIFFERENT ONE 
self.wtfView.heightAnchor.constraint(equalToConstant: 50.0).isActive = true 
self.wtfView.bottomAnchor.constraint(equalTo: self.containerView.bottomAnchor, constant: 040.0).isActive = true 

回答

0

這樣做的原因是,UIScrollView中的內容查看仍然不知道你想讓它佔用的寬度是parentView。

您可以通過在iOS11加入以下約束解決這個問題:

self.containerView.contentLayoutGuide.widthAnchor.constraint(equalTo: self.view.widthAnchor).isActive = true 

這是說「嘿,我要你的內容寬度鎖定到上海華盈的寬度

預iOS的11。你可以簡單地限制一個子視圖既父視圖的左,右錨和內容畫面的左,右錨件

像這樣:

self.wtfView.leftAnchor.constraint(equalTo: self.view.leftAnchor, constant: 40.0).isActive = true 
self.wtfView.rightAnchor.constraint(equalTo: self.view.rightAnchor, constant: 40.0).isActive = true 

與Aleksei的建議相似,您現在將寬度限制爲剛性值(父視圖的寬度),並且scrollview將使用該寬度來決定scrollview的寬度。

1

可嘗試提供:

self.wtfView.widthAnchor.constraint(equalTo: self.containerView.widthAnchor, constant: -40.0).isActive = true 
+0

我會給這個鏡頭一點點,但不應該寬度約束與左右錨點碰撞? – orion

+0

所以,這對我有用。如果我將左約束保持在40,並用-80添加一個寬度約束,它看起來是正確的,但不應該提供一個左和右的錨點是否足夠? – orion

+0

多數民衆贊成在我也想過,但經過長時間調試發現,需要提供寬度 – AlekseiPetrovski

相關問題