我正在平移 UITableViewCell contentView,如下面的代码所示。我想知道正在移动的 UITableViewCell contentView 后面存在的视图是什么?
我问的原因是因为我想改变这个“显示视图”的颜色。滑动单元格时,我想自定义每个 tableViewCell 下方的颜色。例如,如果您向左滑动第三行,您会在单元格后面看到蓝色。如果您向左滑动第 4 行,您会在单元格后面看到绿色。
- (void)panGestureRecognizer:(UIPanGestureRecognizer *)recognizer {
//...
if ((recognizer.state == UIGestureRecognizerStateBegan
|| recognizer.state == UIGestureRecognizerStateChanged)
&& [recognizer numberOfTouches] > 0) {
CGPoint location1 = [recognizer locationOfTouch:0 inView:self.tableView];
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:location1];
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
CGPoint translation = [recognizer translationInView:self.tableView];
cell.contentView.frame = CGRectOffset(cell.contentView.bounds, translation.x, 0);
}
//...
}
我尝试的一件事是创建一个 UIView 并将其添加到 contentView 后面的单元格中。这行得通,但并不令我满意。如果您使用 UITableViewRowAnimationLeft 输入代码以动画方式删除单元格,则背景颜色将随着单元格向左移动。这是有道理的,因为当动画将单元格移出以删除它时,我创建的背景视图会随着整个单元格一起移动。我想要的行为是背景颜色实际上位于单元格后面,因此在删除动画中移动单元格时它不会移动。
以下代码是我如何将背景视图添加到单元格并将其放在 contentView 下方。
[cell.contentView setBackgroundColor:[UIColor whiteColor]];
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, self.tableView.rowHeight)];
view.backgroundColor = [UIColor redColor];
[cell addSubview:view];
[cell bringSubviewToFront:cell.contentView];