ios – 用于更改UITableViewCell高度的自定义动画

ios – 用于更改UITableViewCell高度的自定义动画,第1张

概述我想用UIView动画制作改变UITableViewCell高度的动画(将来用d簧动画制作). 所以我有: - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ static NSString *CellIdentifier = @"C 我想用UIVIEw动画制作改变UItableVIEwCell高度的动画(将来用d簧动画制作).

所以我有:

- (UItableVIEwCell *)tableVIEw:(UItableVIEw *)tableVIEw cellForRowAtIndexPath:(NSIndexPath *)indexPath{    static Nsstring *CellIDentifIEr = @"Cell";    UItableVIEwCell *cell = (UItableVIEwCell*)[tableVIEw dequeueReusableCellWithIDentifIEr:CellIDentifIEr];    if (cell == nil)    {        cell = [[UItableVIEwCell alloc] initWithStyle:UItableVIEwCellStyleDefault reuseIDentifIEr:CellIDentifIEr];        cell.backgroundcolor = [UIcolor greencolor];    }    UILabel *vIEwLabel = [[UILabel alloc] initWithFrame:CGRectMake(10.0f,10.0f,[[UIScreen mainScreen] bounds].size.wIDth,40.0f)];    vIEwLabel.text = @"Test";    vIEwLabel.backgroundcolor = [UIcolor clearcolor];    [cell.contentVIEw addSubvIEw:vIEwLabel];    return cell;}- (voID)tableVIEw:(UItableVIEw *)tableVIEw dIDSelectRowAtIndexPath:(NSIndexPath *)indexPath{    [tableVIEw beginUpdates];    [self animateCell:indexPath andtableVIEw:tableVIEw];    [tableVIEw endUpdates];}- (voID)animateCell:(NSIndexPath*)indexPath andtableVIEw:(UItableVIEw*)tableVIEw{    [UIVIEw animateWithDuration:1.0f animations: ^     {         UItableVIEwCell *cell = [tableVIEw cellForRowAtIndexPath:indexPath];         CGRect rect = cell.frame;         rect.size.height = 90.0f;         cell.frame = rect;         NSLog(@"%f",cell.frame.size.height);     }];}

但它不起作用.但如果我补充说:

- (CGfloat)tableVIEw:(UItableVIEw *)tableVIEw heightForRowAtIndexPath:(NSIndexPath *)indexPath{    if ([indexPath isEqual:[tableVIEw indexPathForSelectedRow]])    {        return 90.0f;    }    return 40.0f;}

我看到该单元格正在改变其高度,动画将应用于在animateCell方法中创建的自定义单元格

解决方法 我认为你不应该使用beginUpdate / endUpdates方法并在调用reloadData之前手动执行动画.单元格的最终状态(动画之后)是使用数据源定义的.这是tableVIEw中的动画示例:dIDSelectRowAtIndexPath:

- (voID)tableVIEw:(UItableVIEw *)tableVIEw dIDSelectRowAtIndexPath:(NSIndexPath *)indexPath{    _selectedindexPath = indexPath;    [UIVIEw animateWithDuration:1 animations:^{        // move down cells which are below selected one        for (UItableVIEwCell *cell in tableVIEw.visibleCells) {            NSIndexPath *cellindexPath = [tableVIEw indexPathForCell:cell];            if (cellindexPath.row > indexPath.row) {                CGRect frame = cell.frame;                frame.origin.y += kTargetHeight - tableVIEw.rowHeight;                cell.frame = frame;            }        }        // expand selected cell        UItableVIEwCell *cell = [tableVIEw cellForRowAtIndexPath:indexPath];        CGRect frame = cell.frame;        frame.size.height = kTargetHeight;        cell.frame = frame;    } completion:^(BOol finished) {        [tableVIEw reloadData];  // commit final state    }];}

所选单元格的最终状态:

- (CGfloat)tableVIEw:(UItableVIEw *)tableVIEw heightForRowAtIndexPath:(NSIndexPath *)indexPath{    if ([indexPath isEqual:_selectedindexPath]) {        return kTargetHeight;    }    return tableVIEw.rowHeight;}
总结

以上是内存溢出为你收集整理的ios – 用于更改UITableViewCell高度的自定义动画全部内容,希望文章能够帮你解决ios – 用于更改UITableViewCell高度的自定义动画所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1055254.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存