2013-08-29 57 views
0

我使用AutoLayout將子視圖定位在UITableViewCell子類中。視圖層次結構的結構是這樣的:Autolayout,將視圖固定爲零高度的兄弟

  • 頂容器視圖
    • 圖像視圖
    • 評論容器視圖
      • 頭像圖像視圖
      • Like按鈕
      • 用戶名標籤
      • 評論按鈕
      • 評論標籤

當有圖像查看圖像時,我已經建立的工作約束之意。但是,當沒有圖像且圖像視圖的高度爲0時,評論視圖無法填充其容器(即其頂部不等於其頂層視圖的頂部)。 我認爲如果視圖A的頂部固定在視圖B的底部並且視圖B的高度爲0,則視圖A的origin.y將是視圖B的origin.y。但那不是發生了什麼事。 任何人都可以告訴我什麼是我的AutoLayout格式不對?

[self.contentContainerView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[_postImageView(<=200.0)][_commentView]|" 
                        options:0 
                        metrics:nil 
                        views:NSDictionaryOfVariableBindings(_postImageView, _commentView)]]; 

_commentView中的子視圖還有其他限制,我會根據請求發佈這些限制。

這裏是發生了什麼事情的一個鏡頭:

Gap between top of second cell and top of blue comment container

而在第二單元預期的效果(這是我所得到的,當格式字符串修改爲:@"|[_commentView]|):很顯然,這個突破存在圖像的情況。

enter image description here

+0

您發佈的約束應該按照您想要的方式工作,所以必須有其他約束阻止視圖展開。它看起來像保持相同的大小 - 確保它沒有明確的高度設置或超級視圖的最高限制。 – rdelmar

+0

@rdelmar,謝謝你的回覆。我將深入研究_commentView子視圖中的約束條件。 – geraldWilliam

回答

0

所以,有一個在我的_commentView約束以下格式:

@"V:|-(8.0)-[_usernameLabel(30)]-[_contentLabel]|" 

_usernameLabel和_contentLabel被_commentView的兩個子視圖。 這似乎是違規的限制。如果我刪除最後一個管道,_commentView按預期調整大小。不幸的是,如果沒有最終管道,_contentLabel不會擴展到其超級視圖的底部。但這是一個單獨的問題。

相關問題