我試圖確定哪些部分當前在我的UITableView中可見。但是,有時我的部分沒有行,只顯示部分標題。有沒有一種方法可以通過使用節標題來確定當前正在顯示的UITableView中的哪些部分?詢問 - (NSArray *)indexPathsForVisibleRows無法確定節,因爲沒有可見的實際行,只有節標題。當部分沒有行時,確定UITableView的可見部分
2
A
回答
3
我能想到的最好的方法是使用contentOffset和frame.size來計算可見的矩形並遍歷每個調用rectForSection:
的部分並查看哪些部分相交。喜歡的東西:
-(NSIndexSet*)visibleSections
{
NSMutableIndexSet* indexSet = [NSMutableIndexSet new];
CGRect visible = self.tableView.bounds;
for(NSInteger section = 0 ; section < [self numberOfSections])
{
CGRect sectBounds = [self.tableView rectForSection:section];
if(CGRectIntersectsRect(sectBounds, visible))
{
[indexSet addIndex:section];
}
}
return indexSet;
}
0
斯威夫特版本
if let visibleRows = tableView.indexPathsForVisibleRows {
let visibleSections = visibleRows.map({$0.section})
}
+1
這不適用於可展開的可摺疊部分 –
0
斯威夫特3個版本OD @大衛回答
func visibleSection() -> IndexSet {
var indexSet: IndexSet = IndexSet()
let visibleRect: CGRect = self.bounds
for sectionIndex in 0..<self.numberOfSections {
let sectionBounds = self.rect(forSection: sectionIndex)
if sectionBounds.intersects(visibleRect) {
indexSet.insert(sectionIndex)
}
}
return indexSet
}
相關問題
- 1. 有沒有辦法確定什麼是UITableView的「頂部」部分頭部?
- 2. UITableView:動態確定部分的數量
- 3. 獲取UITableView的當前固定部分
- 4. 使佈局的一部分不可見,另一部分可見
- 5. 確定具有溢出的元素的可見部分
- 6. UITableView的部分
- 7. 部分和行不UITableView的
- 8. UITableView分組部分
- 9. 具有最大行數的UITableView部分
- 10. 的UITableView底部行的arent可見
- 11. iPhone UITableView部分
- 12. UITableView與部分
- 13. 當刪除一行時,沒有可見的@interface for UITableView
- 14. scrollup uitablviewcell部分可見
- 15. 複選框部分可見
- 16. 只讓部分div可見
- 17. Div並排只有部分可見
- 18. iOS獲取UITableView的可見部分的屏幕截圖
- 19. 正確填充多個部分的UITableView?
- 20. iOS 8中的UITableView可展開/可摺疊部分,特定的行部分不可展開/可摺疊
- 21. 我們可以開始一個部分(UITableView)的部分號碼?
- 22. UITableView部分當上一部分不在屏幕上iPhone
- 23. UITableView分組從NSMutableArray部分
- 24. 截取UIView的截圖,包括3個UITableView(可見+不可見)部分
- 25. 如何區分UITableView自定義部分點擊和部分第一行點擊?
- 26. 捕捉UIScrollView的可見部分後圖像的透明部分
- 27. 如何防止在UITableView中顯示沒有行的部分?
- 28. iPhone SDK:分組的UITableView部分,列表項不顯示在正確的部分
- 29. 重新排列UITableView的部分,行和部分
- 30. 當部分HTML當前可見時,如何持續執行Javascript函數?
這個偉大的工程!我做的唯一的調整是使用self.tableview.bounds而不是獲取框架並修改它的原點。 – seankellycs
是的,這可能是更好的主意:) –