我的单元格中有自定义子视图的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"];
}
谢谢!
答案 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
。