2015-06-22 86 views
0

我有一個自定義的UITableViewCell,裏面有兩個標籤。一個標籤包含一個單詞的簡短定義,另一個包含一個較長的定義,僅在選中單元格時顯示。短定義的長度區分單詞和單元格,因此爲單元格設置明確的高度有時會切斷部分定義。問題是,如果我使用UITableViewAutomaticDimension,單元格會將其高度設置爲適合較長定義標籤的高度,即使此時隱藏較長的定義標籤。這在單元格中留下了很多空白區域。當單元格被輕敲時,出現較長的定義標籤,較短的一個消失,並且單元格正確展開。我怎樣才能設置我的細胞的動態高度,這將適用於較短和較長的標籤,以便在不需要時可以移除這個額外的空白區域?UITableViewCell,設置動態高度w /多個標籤

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
    if currentRow == indexPath.row { 
     return UITableViewAutomaticDimension 
    } else { 
     return 150.0 
    } 
} 

編輯:我使用

的definitionLabel之前是隱藏的電池在didSelectRowAtIndexPath方法觸摸的自定義單元格。我需要單元格在不同時間符合definitionLabel和quickDefinitionLabel的高度。

class ListTableViewCell: UITableViewCell { 

    @IBOutlet weak var wordLabel: UILabel! 
    @IBOutlet weak var definitionLabel: UILabel! 
    @IBOutlet weak var quickDefinitionLabel: UILabel! 

    override func awakeFromNib() { 
     super.awakeFromNib() 
     self.autoresizingMask = UIViewAutoresizing.FlexibleHeight 
     self.clipsToBounds = true 
     definitionLabel.hidden = true 
    } 

    override func prepareForReuse() { 
     self.wordLabel.textAlignment = NSTextAlignment.Left 
     definitionLabel.hidden = true 
     quickDefinitionLabel.hidden = false 
    } 
} 
+1

使用: tableView.estimatedRowHeight =「小區的UI高度」 tableView.rowHeight = UITableViewAutomaticDimension –

回答

0

下的iOS 8和自動佈局,你只需要在你的ViewDidLoad兩行代碼:

tableView.estimatedRowHeight = 44.0 
tableView.rowHeight = UITableViewAutomaticDimension 

第一個數字應該是你的最小尺寸。

根本不需要heightForRowAtIndexPath方法。

+0

我之前已經試過這一點,它不適合我遺憾的是解決問題。我的意思是它按照它應該的方式工作,但不能解決我的多餘空白問題。我的問題是,我有一個隱藏的標籤,直到單元格被觸摸。在大多數情況下,標籤包含很多文字,所以非常高。單元格仍然符合該標籤的高度,即使單元格首次出現時隱藏。這給我留下了很大的空白空間,因爲單元格符合隱藏標籤。這就是我使用heightForRowAtIndexPath的原因。我希望這是有道理的。 – user3353890

+0

啊,我明白了。是的,我想我會將隱藏標籤的高度設置爲0,並將其向上移動足夠遠以至於不會影響行高度,然後將其重新移回,恢復標籤高度,並在我想要顯示時取消隱藏它。 –

0

我發現了一個工作,我沒有設置長定義文本,直到選中單元格爲止......它清除了空白問題,似乎爲我想要的工作而工作。