我有這個表格視圖的表格視圖單元格具有寬度和屏幕高度。每個都顯示一個圖像。 在您瀏覽表格視圖時,您可以讓一個表格視圖單元格佔據整個屏幕。或者最多可以同時在應用程序的屏幕上看到兩個表視圖單元格。 我的問題是:有什麼方法可以找出哪兩個表格視圖單元比另一個佔據更多的屏幕高度?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系統不同,可能會造成混淆。 –