1

我有一个 UITableView,其单元格中有自定义子视图。当用户在单元格上滑动删除手势时,我的视图会缩小一会儿,同时出现“删除”按钮。

据我了解,这是由于出现“删除”按钮并且我的子视图需要变短时发生的一些系统动画。我将子视图的 contentMode 设置为 UIViewContentModeRedraw ,动画完成后一切看起来都很好。

我查看了它在内置邮件应用程序中的工作原理,那里一切都很好。

我怎样才能避免这种缩小?是否可以将此动画更改为“淡出”之类的?或者我可以在这个动画开始时让我的子视图立即变短吗?

解决方案:

最后,我通过以下方式子类化 UITableViewCell 并覆盖 layoutSubviews 方法找到了解决方案:

- (void)layoutSubviews
{
    [super layoutSubviews];

    UIView *view = [self.contentView viewWithTag:101];
    CATransition *animation = [CATransition animation];
    animation.duration = 0.2f;
    animation.type = kCATransitionFade;
    [view.layer removeAllAnimations];
    [view.layer addAnimation: animation forKey:@"deletingFade"];
}

谢谢!

4

2 回答 2

2

您可以使用此委托方法:

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = (UITableViewCell *)[tableView cellForRowAtIndexPath:indexPath];
    // do what ever you need to change in your cell
    return  YES;
}

(或者)

您可以在 TableViewCell 中使用以下方法:

- (void)willTransitionToState:(UITableViewCellStateMask)state
- (void)didTransitionToState:(UITableViewCellStateMask)state

You can change according to state if you are using customCell.
于 2012-09-19T13:52:23.527 回答
1

覆盖派生类layoutSubviews中的方法UITableViewCell并相应地更新所有子视图contentView.bounds.size的位置。

于 2012-09-19T13:51:00.657 回答