2015-07-20 62 views
0

根據代碼更改單元格框(向左右添加頁邊距)。問題是細胞只有在它們消失並通過滾動再次出現之後才更新它們的幀。我也使用了table view的reloadData,但它沒有幫助。如何強制單元格重繪而不滾動?UITableViewCell的幀僅在滾動後更新

- (UITableViewCell *) tableView: (UITableView *) tableView 
     cellForRowAtIndexPath: (NSIndexPath *) indexPath { 
PersonTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: @"TableViewCellID" 
                  forIndexPath: indexPath]; 

cell.frame = CGRectMake(20, cell.frame.origin.y, cell.frame.size.width-2*20, cell.frame.size.height); 

/* tried any of those 
[cell setNeedsDisplay]; 
[cell setNeedsLayout]; 
[cell layoutIfNeeded]; 
*/ 
return cell; 

}

+0

發佈你的'出隊單元'代碼 –

回答

1

我推薦使用.xibs這一點。更容易。

據我所知,你不能以這種方式改變一個單元格的框架。單元格的高度由heightForRowAtIndexPath決定,寬度設置爲tableView的寬度。

你可以用某種方式做你想要的,但我知道的最清潔的方式是以下。

如果你希望這是周圍的細胞保證金,您可以:

  • 創建包含所有視圖的UIView一個UITableViewCell筆尖,並使用約束放置邊框。
  • 嵌入所有的一個UIView裏面的內容(可以稱之爲borderedContentView),並將此作爲有關borderedContentViewcontentViewcontentView
  • 地點的限制立即子視圖,與前置,設定值頂部和底部的限制創建您想要的邊框寬度。
  • 如果您的tableView有backgroundColor,你必須設置contentViewbackgroundColor相同的顏色作爲tableViewbackgroundColor,以便創造一個保證金的錯覺。在tableView的代表方法willDisplayCell:中或在UITableViewCellawakeFromNib或其他相關方法的子類中執行此操作。
  • 沐浴您的邊緣細胞的榮耀。

如果您不想使用界面構建器,也可以以編程方式執行此操作,但在IB中執行起來非常簡單。

希望這會有所幫助。

1

該問題的解決方案是覆蓋setFrame UITableViewCell的方法。這樣它完美的工作。

相關問題