我正在嘗試製作一個如下所示的UITableViewCell
,它將根據其內容視圖調整其高度。中心的圖像應與單元框架一樣寬,並按比例調整其高度。如何讓UITableViewCell調整高度以適應其內容?
正如你所看到的,在細胞圖像不顯示像我希望的方式。我試圖在override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
中將UIImageView
的高度設置爲320.0,但根本沒有任何幫助。
問題:如何讓細胞尊重圖像的高度?
FYI:
- 我不重寫
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat
- 我沒有設置高度約束到
UIImageView
或任何東西,我使用的墊襯只安排意見。 - 圖像顯示使用縱向適合模式。
編輯:
我進一步轉移到添加的高度約束圖片:
class MyTableViewPostCell: UITableViewCell {
@IBOutlet weak var contentLabel: UILabel!
@IBOutlet weak var pictureImageView: UIImageView!
@IBOutlet weak var pictureImageViewHeightConstraint: NSLayoutConstraint!
}
class MyTableViewController: UITableViewController {
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("MyTableViewPostCell") as MyTableViewPostCell
cell.contentLabel.text = "This is a very very very very very very very long content."
cell.pictureImageViewHeightConstraint.constant = 320
cell.pictureImageView.sd_setImageWithURL(NSURL(string: "http://somedomain.com/pic"))
return cell
}
}
而且運行時,我得到了一個約束衝突錯誤。請看下圖:
(
"<NSLayoutConstraint:0x7ff7b5026c30 V:[UIImageView:0x7ff7b50289e0(40)]>",
"<NSLayoutConstraint:0x7ff7b5029a90 V:[UIImageView:0x7ff7b5029990(320)]>",
"<NSLayoutConstraint:0x7ff7b502a630 UIImageView:0x7ff7b50289e0.top == UITableViewCellContentView:0x7ff7b5028910.topMargin + 6>",
"<NSLayoutConstraint:0x7ff7b502a770 V:[UIImageView:0x7ff7b50289e0]-(12)-[UILabel:0x7ff7b5029390'This is a very very very ...']>",
"<NSLayoutConstraint:0x7ff7b502a950 V:[UILabel:0x7ff7b5029390'This is a very very very ...']-(10)-[UIImageView:0x7ff7b5029990]>",
"<NSLayoutConstraint:0x7ff7b502aa40 UITableViewCellContentView:0x7ff7b5028910.bottomMargin == UILabel:0x7ff7b5029c20'Label'.bottom + 10>",
"<NSLayoutConstraint:0x7ff7b502aa90 V:[UIImageView:0x7ff7b5029990]-(17)-[UILabel:0x7ff7b5029c20'Label']>",
"<NSLayoutConstraint:0x7ff7b2cae430 'UIView-Encapsulated-Layout-Height' V:[UITableViewCellContentView:0x7ff7b5028910(283.5)]>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x7ff7b5029a90 V:[UIImageView:0x7ff7b5029990(320)]>
我不知道在哪裏UIView-Encapsulated-Layout-Height
從何而來,但好像它是導致衝突的。有任何解決這個問題的方法嗎?謝謝!
參見此信息:[使用自動佈局中的UITableView動態單元佈局&可變行高度(http://stackoverflow.com/questions/18746929/using - 自動佈局合的UITableView換動態小區的佈局-可變行高度) – zisoft