我有这个表格视图的表格视图单元格具有宽度和屏幕高度。每个都显示一个图像。 在您浏览表格视图时,您可以让一个表格视图单元格占据整个屏幕。或者最多可以同时在应用程序的屏幕上看到两个表视图单元格。 我的问题是:有什么方法可以找出哪两个表格视图单元比另一个占据更多的屏幕高度?Swift - 找出哪个表格视图单元格占据大部分屏幕
0
A
回答
2
看看第二个可见细胞(tableView.visibleCells[1]
)并检查其位置y
。如果它小于tableView的一半高度,它会占用更多的屏幕,否则会占用更少的屏幕。打破任何你想要的方式。
编辑
对于一个给定的indexPath位置y
是固定的,所以你需要考虑的tableView的contentOffset
。
CGFloat yOrigin = [tableView.visibleCells[1] frame].origin.y - tableView.contentOffset.y;
0
你可能会尝试获取tableView的visibleCells并检查这些单元格的原点。由于您在任何时候都会有2个可见细胞,因此比较它们各自的帧的y值可能会告诉您哪个占据了更高的高度。
+0
我试图像这样: 打印(tableView.visibleCells [0] .frame.origin.y) 打印(tableView.visibleCells [1] .frame.origin.y) 而且不管如何移动2个细胞在屏幕上(更高或更低),对于前2我得到:568和1136,而第二和第三我得到1136和1704. 这似乎并不重要,哪个需要更多的屏幕或更少的帧。 origin.y不会改变。 – asheyla
0
以下是找出哪些细胞可见超过60%的简单方法。
func scrollViewDidScroll(scrollView: UIScrollView) {
checkWhichVideoToEnable()
}
func checkWhichVideoToEnable() {
for cell in tableView.visibleCells as [UITableViewCell] {
if cell.isKindOfClass(UITableViewCell) {
let indexPath = tableView.indexPathForCell(cell)
let cellRect = tableView.rectForRowAtIndexPath(indexPath!)
let superView = tableView.superview
let convertedRect = tableView.convertRect(cellRect, toView: superView)
let intersect = CGRectIntersection(tableView.frame, convertedRect)
let visibleHeight = CGRectGetHeight(intersect)
if visibleHeight > self.view.bounds.size.height * 0.6 { // only if 60% of the cell is visible.
//cell is visible more than 60%
print(indexPath?.row) //your visible cell.
}
}
}
}
从HERE引用。
相关问题
- 1. 找出哪个部分的按钮属于单元格内的单元格UITableView
- 2. 表格视图单元格可选 - swift
- 3. TableView单元格填充屏幕Swift
- 4. 在Swift中访问表格视图单元格中的数据
- 5. 表格视图标记多个单元格Swift 3
- 6. 表格视图单元仅自动版式时,离屏幕
- 7. 如何分解小屏幕上的表格单元格?
- 8. 检查表格视图单元格的部分索引标题
- 9. 滚动Android视图/大于屏幕大小的表格
- 10. 有第二个Html表格单元格跨度屏幕
- 11. 分组表视图 - 圆角单元格?
- 12. Swift 3:设计表格视图单元格
- 13. iOS Swift中 - canEditRowAtIndexPath表格视图单元格检查userid
- 14. Swift 2带有超链接的表格视图单元格
- 15. Swift中没有Storyboard的自定义表格视图单元格
- 16. 删除表格视图单元格与解析swift
- 17. 单元格表格视图中的按钮Swift iOS
- 18. 在表格视图单元格中嵌入表格视图
- 19. 使列表视图占据整个屏幕
- 20. 旋转表单元格不占用表格的全部宽度
- 21. iOS:只有一个表格单元,但屏幕充满单元格边框
- 22. 表格单元格很大
- 23. 拍摄屏幕在ios中的单元格内的视图
- 24. Swift:表视图只返回一个单元格
- 25. 如何在UITableView的屏幕中心找到哪个行/单元格?
- 26. 单击突出显示表格视图单元格
- 27. SWIFT:在包含多个部分的表格视图中显示字典时无法出现标识符单元格错误的单元格
- 28. 调整表格视图单元格
- 29. 从全屏显示一个单元格的视频Swift
- 30. 当滚动表格视图单元格的视图,单元格文本更改
我试过像这样: print(tableView.visibleCells [0] .frame.origin.y) print(tableView.visibleCells [1] .frame.origin.y) 不管我如何移动2个单元格屏幕(更高或更低),第2我得到:568和1136,而第二和第三我得到1136和1704. 这似乎并不重要,哪个需要更多的屏幕或更少的frame.origin。 y不会改变。 – asheyla
对。你必须考虑到tableView的contentOffset。我会更新我的答案。 – Avi
这是因为view.fram总是指向超级视图的内部坐标系。 您可以将坐标转换为self.view的坐标。 UIView有点转换的内置方法。您也可以将它转换为主窗口或设备坐标,但旋转适用时加上设备的原点(0.0)与UIKit coodrinate系统不同,可能会造成混淆。 –