当用户执行滑动到删除手势时,UITableCellView的子视图会缩小

时间:2012-09-19 13:34:55

标签: iphone ios uitableview

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

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

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

我怎样才能避免这种萎缩?是否可以将此动画更改为“淡出”或其他内容?或者,我可以处理这个动画开始的时刻,以便立即缩短我的子视图吗?

SOLUTION:

最后,我通过以下方式通过继承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"];
}

谢谢!

2 个答案:

答案 0 :(得分: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;
}

(OR)

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

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

You can change according to state if you are using customCell.

答案 1 :(得分:1)

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