我需要什麼樣的iOS的自動佈局VS滾動型:Contentsize問題
我有一個滾動視圖具有以下層次:
滾動型
。^contentView(UIView)
。 -^view1(黃色)
。 - ^視圖2(灰色)
view1
(黃色)具有固定的高度和被固定在內容查看的頂部。我已經指定了除高度view2
之外的所有約束條件。因爲我正在以編程方式爲view2
(灰色)添加子視圖,並且將具有隨機高度。
問題是我在如何設置view2
的高度限制方面處於虧損狀態。爲了計算contentSize
,scrollview需要從頂部到底部運行約束。但view2
的高度只有在添加子視圖後纔會確定,當然,這將對確定高度有所需的所有限制。
我試過
1)我的第一個計劃是添加子視圖和編程設置它的約束,使滾動視圖高興。像這樣:
detailsView = [ProfileDetailsView instantiateFromNib];
[self.detailHolder addSubview:detailsView];
[self.detailHolder addConstraint:[NSLayoutConstraint constraintWithItem:detailsView
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:self.detailHolder
attribute:NSLayoutAttributeTop
multiplier:1.0
constant:0.0]];
[self.detailHolder addConstraint:[NSLayoutConstraint constraintWithItem:detailsView
attribute:NSLayoutAttributeLeading
relatedBy:NSLayoutRelationEqual
toItem:self.detailHolder
attribute:NSLayoutAttributeLeading
multiplier:1.0
constant:0.0]];
[self.detailHolder addConstraint:[NSLayoutConstraint constraintWithItem:detailsView
attribute:NSLayoutAttributeBottom
relatedBy:NSLayoutRelationEqual
toItem:self.detailHolder
attribute:NSLayoutAttributeBottom
multiplier:1.0
constant:0.0]];
[self.detailHolder addConstraint:[NSLayoutConstraint constraintWithItem:detailsView
attribute:NSLayoutAttributeTrailing
relatedBy:NSLayoutRelationEqual
toItem:self.detailHolder
attribute:NSLayoutAttributeTrailing
multiplier:1.0
constant:0.0]];
的問題是,Xcode中給我的錯誤ScrollView has ambiguous scrollable content height
。我無法給出view2
的固定高度,因爲我稍後添加的子視圖將具有設置ScrollView
的contentSize的所有必要約束條件。
2)然後我嘗試給view2
添加一個高度約束,使其具有較低的優先級,這樣當子視圖約束啓動時,高度約束將被覆蓋。但由於某種原因,這似乎不起作用。
哇!像魅力一樣工作!謝謝哥們。還有一件事 - 起初它沒有工作,但後來我添加了detailsView。translatesAutoresizingMaskIntoConstraints = NO;'它工作。我會添加並接受。再次感謝。 – ShahiM
對不起,我忘了,自動佈局systen會自動將視圖的自動調整掩碼轉換爲約束,所以你應該將它設置爲no手動 – John