平移 UITableViewCell 时显示啥视图?
Posted
技术标签:
【中文标题】平移 UITableViewCell 时显示啥视图?【英文标题】:What view is revealed when panning UITableViewCell?平移 UITableViewCell 时显示什么视图? 【发布时间】:2013-02-20 20:57:25 【问题描述】:我正在平移 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];
【问题讨论】:
【参考方案1】:啊哈!
我找到了一个优雅而美妙的解决方案。我高兴得发抖。
我在 cell.contentView 的右侧添加了另一个视图,其背景颜色是我想要的。现在,当您滑动单元格时,rightSideView 会随之拉动,因此看起来就像是正在显示的视图。 (现在如果你想把内容放在那里,这对另一个人来说是另一个复杂的事情......我不这样做)我想做的就是让每个单元格能够有不同的显示颜色。耶!请注意,您必须使框架超长(即 500),以便删除的滑动看起来正确。
这是我的代码。
UILabel* label = [[UILabel alloc] initWithFrame:CGRectMake(320, 0, 500, self.tableView.rowHeight)];
label.backgroundColor = [UIColor redColor];
[cell.contentView addSubview:label];
【讨论】:
以上是关于平移 UITableViewCell 时显示啥视图?的主要内容,如果未能解决你的问题,请参考以下文章
如何自定义滑动 UITableViewCell 时显示的删除按钮
UITableViewCell 上的 UIPanGestureRecognizer 覆盖 UITableView 的滚动视图手势识别器