Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 自定义UITableViewCell宽度在tableview重新加载数据时调整_Iphone_Objective C_Ios_Uitableview - Fatal编程技术网

Iphone 自定义UITableViewCell宽度在tableview重新加载数据时调整

Iphone 自定义UITableViewCell宽度在tableview重新加载数据时调整,iphone,objective-c,ios,uitableview,Iphone,Objective C,Ios,Uitableview,我有一个UITableView,我正在通过UIView动画块增加它的宽度 [UIView animateWithDuration:.5 animations:^{ CGRect frame = myTableView.frame; frame.size.height += 190; myTableView

我有一个UITableView,我正在通过UIView动画块增加它的宽度

[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]时。Reload data正在调用上述willDisplayCell调用以设置正确的帧,但当我查看UITableViewCell setFrame的堆栈跟踪时:正在从专用UITableView调用对我的所有单元格调用另一个调用:

 -[UITableView(_UITableViewPrivate) _updateVisibleCellsNow:]

此调用将所有可见UITableView单元格的边框设置为UITableView的原始宽度和较小宽度。有人知道如何防止这种情况发生,使我的单元格保持表格视图的宽度吗?

我认为最好的办法是不要使用
UITableViewCell
宽度


更好的解决方案是在单元格中添加一个子视图并更改该子视图的宽度。

基本上您不能更改单元格本身的宽度,它最终总是等于表的宽度

您可以更改单元格的
内容视图的框架,但这不是一个好的做法


创建您自己的视图,将其添加到单元格中,并在
layoutSubviews

中更改其宽度。您好,在UIView动画块中,您只需增加高度而不是宽度,如果要同时增加高度和宽度,请在此处应用。