2015-04-18 380 views
0

我有一個視圖控制器與uitableview顯示一些評論。我使用故事板和自動佈局。爲什麼我的uitableview被太多的單元切斷? (swift)

單元的高度取決於內容。

當我有很多單元格時,我的tableview被切斷,並沒有完全顯示。但是對於更少的單元來說是正確的。

在viewDidLoad中:

self.commentsTableView.estimatedRowHeight = 93.0 
self.commentsTableView.rowHeight = UITableViewAutomaticDimension 

在viewDidAppear,我試圖2層的方法,先用高度約束:

override func viewDidAppear(animated: Bool) { 

    super.viewDidAppear(animated) 

    self.commentsTableView.removeConstraint(self.tableViewHeightConstraint) 
    self.tableViewHeightConstraint = NSLayoutConstraint(item: self.commentsTableView, attribute: NSLayoutAttribute.Height, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: self.commentsTableView.contentSize.height) 
    self.commentsTableView.addConstraint(self.tableViewHeightConstraint) 

    self.commentsTableView.setNeedsUpdateConstraints() 
    self.commentsTableView.updateConstraintsIfNeeded() 
} 

我與所述框架(沒有高度約束)的高度也嘗試:

override func viewDidAppear(animated: Bool) { 

    super.viewDidAppear(animated) 

    var frame:CGRect = self.commentsTableView.frame 
    frame.size.height = commentsTableView.contentSize.height 
    self.commentsTableView.frame = frame 
} 

我和2種方法的結果完全一樣。 當單元格太多時,表格視圖不會完全顯示。

編輯

的屏幕截圖。藍色是我的滾動視圖。

my taleview

+0

不能滾動的tableview?你禁用滾動嗎? – Paulw11

+0

我可以滾動我的tableview,滾動被禁用,因爲我的tableview在滾動視圖。我檢查確定,我的scrollview的高度是好的,問題是與tableview。 – cmii

+0

您可以在表格視圖中啓用滾動功能,或者您需要確保您的滾動視圖內容大小足夠大 - 聽起來並非如此。 – Paulw11

回答

0

我找到了解決辦法。

在我的viewDidAppear中,我首先根據其內容大小設置tableview的框架,然後使用tableview的高度設置scrollview的大小。

解決方案是做相反的事情,首先將scrollview設置爲tableview的內容大小,然後用scrollview的高度調整tableview。它的工作原理!

override func viewDidAppear(animated: Bool) { 

    super.viewDidAppear(animated) 

    self.scrollView.contentSize=CGSizeMake(self.scrollView.frame.size.width, self.commentsTableView.frame.origin.y + commentsTableView.contentSize.height) 

    var frame:CGRect = self.commentsTableView.frame 
    frame.size.height = scrollView.contentSize.height 
    self.commentsTableView.frame = frame 

}

相關問題