2016-07-31 48 views
3

的自動版式的UITableViewCell高度多個I有一個tableViewCell其含有imageSlider應該是這樣的屏幕高度的40%。的TableView /屏幕

是無論如何可能與自動佈局?在將單元格添加到tableView之後,單元格的高度已經被計算出來,因此爲單元格高度忽略添加的任何約束。

我可以實現heightForRow並返回正確的值,但我想知道如果我能單獨自動版式實現這一目標?

cell.imageSlider.heightAnchor.constraint(equalTo: tableView.heightAnchor, multiplier: 0.4) 

回答

0

將高度約束添加到圖像滑塊並在單元格中聲明相應的iboutlet。將其常量值設置爲view.bounds.size.height/60.0。讓我知道它是否有效。

+0

那是不是我要找的,因爲我將不得不每次界限變化... – warly

+0

由於滑塊是在細胞內手動更新不變,從而根據自動綁定的意見也不會調整自身。您可以將該代碼放置在cellForRowAtIndexPath中或單元類中的awakfromNib方法中。 –

+0

您的代碼(view.bounds.size.height/60)不起作用,因爲它使幻燈片成爲視圖大小的60倍。 bounds.height * 0.4會工作,但不會自動更新輪換更改。因此,tableView(_ tableView:UITableView,heightForRowAt indexPath:IndexPath) - > CGFloat似乎是這個更好的地方。 – warly

0

添加的高度約束圖像滑塊和聲明在細胞的相應IBOutlet中。將其常量值設置爲view.bounds.size.height * 0.4。設置頂級的& imageSlider底部約束從superView(TableViewCell在你的案例中)。我知道它是否有效。 此外,添加以下代碼

- (void)viewWillLayoutSubviews{ 
    [self.imageSlider layoutIfNeeded]; 
    //OR 
    [cell layoutIfNeeded]; 
} 

layoutIfNeeded將自動更新的約束。

+0

這與@Deepak庫馬爾的一個相同的建議(見下文)。高度不適應view.bounds的改變。 – warly