2016-10-30 60 views
0

(iOS版8故事板) 我有我的tableView的權利細節的UITableViewCell。動態的UITableViewCell高度不工作

在故事板標題和右詳細的標籤設置爲numberoflines = 0

我的代碼:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    keyArray = [[NSMutableArray alloc]init]; 
    self.table.estimatedRowHeight = 140.0; 
    self.table.rowHeight = UITableViewAutomaticDimension; 
    [spinner startAnimating]; 
    [self cleanJson:prunedDictionary]; 

} 

- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 
    return UITableViewAutomaticDimension; 
} 

- (CGFloat) tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(nonnull NSIndexPath *)indexPath{ 
    return UITableViewAutomaticDimension; 

} 

在cleanJson結束時,我跑[self.table reloadData]。 TableViewCell調整大小,但他們都調整大小相同的大小,它看起來像默認大小。 (我知道他們調整的原因是因爲在故事板我將高度設置爲200,他們都調整爲更小的尺寸,當應用程序運行)

他們爲什麼不正確調整?

+0

你的約束可能是錯誤的。你能以某種方式將它們添加到你的問題嗎? –

+0

@d。費爾伯沒有限制,因爲我提到,它不是一個自定義單元格。所以它已經有限制,據我所知 – huddie96

回答

1

的問題是,您使用的是內置的電池類型和內置的標題和細節標籤。這些細胞類型不是自我大小。

您必須使用自定義單元格並自己進行設計,並使用約束來從內向外確定單元格的大小。

0

你不需要任何的這兩個委託方法。單元格不能正確調整大小,因爲您的自動佈局約束設置不正確。請檢查這些約束並確保從上到下至少存在一個約束視圖路徑。我的意思是,你可以從單元格本身的頂部邏輯跳轉。通過所有的視圖和垂直閉鎖,然後從下到下。

這樣的:

上海華

餘量約束

視圖

餘量約束

的頂部。

視圖

餘量約束

上海華的底部。

中間的視圖必須限制爲固定大小..或他們必須能夠根據其內容調整大小。很明顯,最終的高度是所有這些邊距和視圖高度的組合。

這是一個線性函數

finalheight = topmargin + viewHeight + margin + viewHieght..etc....etc..bottommargin 
+0

這不是一個自定義單元格。所以限制已經確定,我相信 – huddie96

+0

你能證實它確實如此嗎?假設是調試中唯一最大的敵人。 –

+0

它不是自定義單元格嗎?我可以證實是的。該自定義單元不需要約束。幾乎是積極的。 – huddie96

0

其實有一個辦法 - 但我寧願創建一個自定義UITableViewCell

override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 
    let cell = self.tableView(tableView, cellForRowAt: indexPath) 
    let targetSize = CGSize(width: self.tableView.bounds.width, height: CGFloat.infinity) 

    return cell.systemLayoutSizeFitting(targetSize, 
             withHorizontalFittingPriority: 1000, 
             verticalFittingPriority: 900).height 
}