2016-06-08 187 views
0

我有一個自定義表格視圖單元格,我想根據標籤中的文本量自動調整大小。自動調整大小自定義UITableViewCell

這是我的手機。我想調整它的大小以顯示評論標籤中的所有文字。 enter image description here

在我的表視圖控制器我用UITableViewAutomaticDimension

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
     if indexPath.section == 0 { 
      if indexPath.row == 0 { 
       return 200 
      } else { 
       return 49 
      } 
     } else if indexPath.section == 1 { 
      return 100 
     } else if indexPath.section == 2 { 
      if indexPath.row == 0 { 
       return 200 
      } else { 
       return 400 
      } 
     } else { 
      return UITableViewAutomaticDimension 
     } 
    } 

    override func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
     return UITableViewAutomaticDimension 
    } 

這是我結束了。

enter image description here

+0

確保將contentView的尾部,前導,頂部和底部連接到其子視圖。 – genaks

+0

你看過這篇文章嗎? http://stackoverflow.com/questions/18746929/using-auto-layout-in-uitableview-for-dynamic-cell-layouts-variable-row-heights – Dominic

+0

做一些像[鏈接](http:// useyourloaf。 com/blog/table-view-cells-with-varying-row-heights /),它會幫助你 –

回答

0

請確保您有在頂部,底部設置的限制,尾隨並從孩子導致利潤率的內容查看你有UIView或任何子元素。這可以幫助你

enter image description here

在你的情況,你需要定義從ReviewLabel底部間隔限制的內容查看,使其工作。相應的UILabel s也需要頂部,尾部和領先的利潤空間。頂部空間可以從DateLabel定義,而前後空格可以從包含星號的UIView中定義。

爲什麼?

contentView需要知道它的子視圖的框架才能使uitableviewautomaticdimension工作。如果它不知道它的子視圖幀的話,那就不知道如何自動調整大小以

0

實現委託函數的高度算了一筆賬:

override func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
    let cell = tableView.cellForRowAtIndexPath(indexPath) 
    let size = cell.contentView.systemLayoutSizeFittingSize(UILayoutFittingCompressedSize) 
    return size.height + 1.0 // Add 1.0 for the cell separator height 
} 
0

您需要:

  1. 爲您的標籤設置top, trailing, leading, bottom對IB中superView的約束
  2. numberOfLines = 0
  3. Content Compression Resistance Priority VerticalContent Hugging Priority Vertical
  4. 代碼self.tableView.estimatedRowHeight = MinControlSize;self.tableView.rowHeight = UITableViewAutomaticDimension;

,並設置文本後調用此

cell.setNeedsDisplay(); 
cell.layoutIfNeeded(); 
在委託方法

optional func tableView(_ tableView: UITableView, 
heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat 

希望這有助於集。我從Apple的Self Sizing示例中獲得了此示例