UITableView - 如何检查部分页脚是否在屏幕上完全可见并相应地滚动以使部分页脚完全可见?
UITableView - How to check whether a section footer is visible completely on screen and scroll accordingly to make section footer visible completely?
在 UICollectionView
中有多个部分,我可以
- 检查部分页脚是否在屏幕上完全可见。
- 如果没有,我将执行滚动,使页脚完全可见。
这是我实现此目的的代码片段。
private func ensureSectionFooterIsVisibleIfPossible(_ section: Int) {
//
// Ensure footer is visible.
//
//
let indexPath = IndexPath(item: 0, section: section)
if let layoutAttributes = collectionView.layoutAttributesForSupplementaryElement(ofKind: UICollectionView.elementKindSectionFooter, at: indexPath) {
var visibleRect: CGRect = CGRect()
visibleRect.origin = collectionView.contentOffset
visibleRect.size = collectionView.bounds.size
let footerRect = layoutAttributes.frame
//
// Is this section footer visible completely on screen?
//
if !visibleRect.contains(footerRect) {
//
// If not, scroll till the section footer visible completely.
//
var resultOffset : CGPoint = collectionView.contentOffset
resultOffset.y = (footerRect.origin.y + footerRect.size.height) - (collectionView.contentInset.top + collectionView.frame.size.height)
collectionView.scrollRectToVisible(CGRect(origin: resultOffset, size: collectionView.frame.size), animated: true)
}
}
}
我怎样才能在 UITableView
中实现类似的行为?因为,我在 UITableView
.
中找不到等效的 collectionView.layoutAttributesForSupplementaryElement
您可以使用 rectForFooter 方法
var visibleRect: CGRect = CGRect()
visibleRect.origin = tableview.contentOffset
visibleRect.size = tableview.bounds.size
let footerRect = tableview.rectForFooter(inSection: 0)
// Is this section footer visible completely on screen?
if !visibleRect.contains(footerRect) {
// If not, scroll till the section footer visible completely.
}
在 UICollectionView
中有多个部分,我可以
- 检查部分页脚是否在屏幕上完全可见。
- 如果没有,我将执行滚动,使页脚完全可见。
这是我实现此目的的代码片段。
private func ensureSectionFooterIsVisibleIfPossible(_ section: Int) {
//
// Ensure footer is visible.
//
//
let indexPath = IndexPath(item: 0, section: section)
if let layoutAttributes = collectionView.layoutAttributesForSupplementaryElement(ofKind: UICollectionView.elementKindSectionFooter, at: indexPath) {
var visibleRect: CGRect = CGRect()
visibleRect.origin = collectionView.contentOffset
visibleRect.size = collectionView.bounds.size
let footerRect = layoutAttributes.frame
//
// Is this section footer visible completely on screen?
//
if !visibleRect.contains(footerRect) {
//
// If not, scroll till the section footer visible completely.
//
var resultOffset : CGPoint = collectionView.contentOffset
resultOffset.y = (footerRect.origin.y + footerRect.size.height) - (collectionView.contentInset.top + collectionView.frame.size.height)
collectionView.scrollRectToVisible(CGRect(origin: resultOffset, size: collectionView.frame.size), animated: true)
}
}
}
我怎样才能在 UITableView
中实现类似的行为?因为,我在 UITableView
.
collectionView.layoutAttributesForSupplementaryElement
您可以使用 rectForFooter 方法
var visibleRect: CGRect = CGRect()
visibleRect.origin = tableview.contentOffset
visibleRect.size = tableview.bounds.size
let footerRect = tableview.rectForFooter(inSection: 0)
// Is this section footer visible completely on screen?
if !visibleRect.contains(footerRect) {
// If not, scroll till the section footer visible completely.
}