2012-05-04 90 views
0

我有一個UITableView,我通過UIView動畫塊增加其寬度。自定義的UITableViewCell寬度調整在tableview reloadData

[UIView animateWithDuration:.5 
        animations:^{ 
         CGRect frame = myTableView.frame; 
         frame.size.height += 190; 
         myTableViewView.frame = frame; 
         [[myTableViewView visibleCells] makeObjectsPerformSelector:@selector(setNeedsDisplay)]; 
        } 
        completion:nil]; 

一旦通話結束我的子類UITableViewCells重繪,並調用該委託方法。

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell  forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    CGRect frame = cell.frame; 
    frame.size.width = tableView.frame.size.height; 
    cell.frame = frame; 
} 

沒有這個,我的UITableViewCells沒有繪製到UITableView的全部寬度。我遇到的問題是當我調用[tableView reloadData]。刷新數據調用上述willDisplayCell調用設置正確的框架,但是當我觀看的UITableViewCell SETFRAME堆棧跟蹤:另一個呼叫正在調用我所有的細胞從一個私人的UITableView電話:

-[UITableView(_UITableViewPrivate) _updateVisibleCellsNow:] 

此電話爲將我所有可見的UITableViewCells的框架設置爲UITableView的原始寬度和較小寬度。有沒有人有任何想法如何保持這種情況發生,使我的細胞保持表視圖的寬度?

+0

嗨, 這裏在UIView動畫塊,你只是增加高度而不是寬度,如果你想增加這兩個適用於這裏。 –

回答

2

我認爲最好的主意不是用UITableViewCell寬度來做魔法。

更好的解決方案是將子視圖添加到單元格並更改該子視圖的寬度。

0

基本上你不能改變單元格的寬度,它總是等於表格的寬度。

您可以更改單元格的框架contentView,但這不是一個好習慣。

創建您自己的視圖,將其添加到單元格中,並將其寬度更改爲layoutSubviews

相關問題