我的目标是让 UITableViewCells 在接近 UITableView 的边界并即将被覆盖/显示时淡入/淡出。
我一直在尝试的方法是在滚动事件期间获取 UITableViewCell 的坐标。问题是每个单元格似乎都在 0,0。我尝试将坐标转换为父表和视图,但它们仍然出现在 0,0。
所以一般来说,如果有人知道获取坐标的方法,或者知道根据他们的位置淡入和淡出 UITableViewCells 的更好方法,我将非常感谢您提供的任何建议。
谢谢你的时间,乔尔
我的目标是让 UITableViewCells 在接近 UITableView 的边界并即将被覆盖/显示时淡入/淡出。
我一直在尝试的方法是在滚动事件期间获取 UITableViewCell 的坐标。问题是每个单元格似乎都在 0,0。我尝试将坐标转换为父表和视图,但它们仍然出现在 0,0。
所以一般来说,如果有人知道获取坐标的方法,或者知道根据他们的位置淡入和淡出 UITableViewCells 的更好方法,我将非常感谢您提供的任何建议。
谢谢你的时间,乔尔
第一步是使用
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)
为什么不在 UIImageView 中使用部分透明的渐变 PNG 叠加,顶部和底部的透明度较低?
在表格滚动中乱用单元格绘图将对性能产生很大影响。
你可以打电话
- (CGRect)rectForRowAtIndexPath:(NSIndexPath *)indexPath;
得到任何给定单元格的矩形。这将包含它在矩形内的原点结构中的坐标。
我怀疑这些单元格保存在 UITableView 的“单元格大小”子视图中,因此您看到的是相对于该视图的框架。
我没有实际的答案,但是,我建议您查看 UIScrollView 的委托类:UIScrollViewDelegate。它会响应– scrollViewDidScroll:
,您可以手动计算出您的偏移量。UIScrollView 是 UITableView 的超类。
- (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view
您可以使用 UIView 的方法将点(例如您的原点)转换为另一个视图的坐标。