17

我的目标是让 UITableViewCells 在接近 UITableView 的边界并即将被覆盖/显示时淡入/淡出。

我一直在尝试的方法是在滚动事件期间获取 UITableViewCell 的坐标。问题是每个单元格似乎都在 0,0。我尝试将坐标转换为父表和视图,但它们仍然出现在 0,0。

所以一般来说,如果有人知道获取坐标的方法,或者知道根据他们的位置淡入和淡出 UITableViewCells 的更好方法,我将非常感谢您提供的任何建议。

谢谢你的时间,乔尔

4

4 回答 4

65

第一步是使用

CGRect rectInTableView = [tableView rectForRowAtIndexPath:indexPath];

它将报告 tableView 中单元格的 CGRect。但是,这个值不会随着 tableView 的滚动而改变。它是相对于表格第一行(而不是第一可见行)的位置。要获得单元格在屏幕上的位置,您必须使用将其转换为超级视图坐标系

CGRect rect = [tableView convertRect:rectInTableView toView:[tableView superview]];

所以下面这行就完成了

CGRect rect = [tableView convertRect:[tableView rectForRowAtIndexPath:indexPath] toView:[tableView superview]];

斯威夫特 4

// Consider the indexPath at row 1, section 0.
let rectWithinTableView : CGRect = self.tableView.rectForRow(at: IndexPath(row: 1, section: 0))
let rectWithSuperViewCoordinates : CGRect = self.convert(rect: rectWithinTableView, to: self.tableView.superview)
于 2011-01-06T22:13:11.843 回答
3

为什么不在 UIImageView 中使用部分透明的渐变 PNG 叠加,顶部和底部的透明度较低?

在表格滚动中乱用单元格绘图将对性能产生很大影响。

于 2009-03-27T01:29:23.420 回答
2

你可以打电话

- (CGRect)rectForRowAtIndexPath:(NSIndexPath *)indexPath;

得到任何给定单元格的矩形。这将包含它在矩形内的原点结构中的坐标。

于 2009-08-05T23:06:40.933 回答
0

我怀疑这些单元格保存在 UITableView 的“单元格大小”子视图中,因此您看到的是相对于该视图的框架。

我没有实际的答案,但是,我建议您查看 UIScrollView 的委托类:UIScrollViewDelegate。它会响应– scrollViewDidScroll:,您可以手动计算出您的偏移量。UIScrollView 是 UITableView 的超类。

- (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view您可以使用 UIView 的方法将点(例如您的原点)转换为另一个视图的坐标。

于 2009-03-26T23:16:21.197 回答