我的应用程序有自定义UITableView
单元格。我想一次只显示一个单元格 - 下一个单元格应该部分显示。在 ScrollView 中,您可以设置isPagingEnabled
为 YES。
但是我怎么能在上面做UITableView
呢?
谢谢
我的应用程序有自定义UITableView
单元格。我想一次只显示一个单元格 - 下一个单元格应该部分显示。在 ScrollView 中,您可以设置isPagingEnabled
为 YES。
但是我怎么能在上面做UITableView
呢?
谢谢
请注意,UITableView
继承自UIScrollView
,因此您可以在表格视图本身上设置pagingEnabled
为。YES
当然,这仅在所有单元格和表格视图本身具有相同高度时才有效。
如果您希望在滚动后始终在表格视图的顶部开始一个单元格,您可以使用 aUIScrollViewDelegate
并实现类似的东西。
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView
withVelocity:(CGPoint)velocity
targetContentOffset:(inout CGPoint *)targetContentOffset
{
UITableView *tv = (UITableView*)scrollView;
NSIndexPath *indexPathOfTopRowAfterScrolling = [tv indexPathForRowAtPoint:
*targetContentOffset
];
CGRect rectForTopRowAfterScrolling = [tv rectForRowAtIndexPath:
indexPathOfTopRowAfterScrolling
];
targetContentOffset->y=rectForTopRowAfterScrolling.origin.y;
}
这使您可以调整滚动操作将在哪个内容偏移处结束。
Swift 5 基础版,但是效果不是很好。我需要对其进行自定义以供自己使用以使其正常工作。
func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
if let tv = scrollView as? UITableView {
let path = tv.indexPathForRow(at: targetContentOffset.pointee)
if path != nil {
self.scrollToRow(at: path!, at: .top, animated: true)
}
}
}
定制版
// If velocity is less than 0, then scrolling up
// If velocity is greater than 0, then scrolling down
if let tv = scrollView as? UITableView {
let path = tv.indexPathForRow(at: targetContentOffset.pointee)
if path != nil {
// >= makes scrolling down easier but can have some weird behavior when scrolling up
if velocity.y >= 0.0 {
// Assumes 1 section
// Jump to bottom one because user is scrolling down, and targetContentOffset is the very top of the screen
let indexPath = IndexPath(row: path!.row + 1, section: path!.section)
if indexPath.row < self.numberOfRows(inSection: path!.section) {
self.scrollToRow(at: indexPath, at: .top, animated: true)
}
} else {
self.scrollToRow(at: path!, at: .top, animated: true)
}
}
}
我认为我根本不会为此使用 UITableView。
我想我会使用 UIScrollView 和一大堆分页内容。您可以在滚动活动上动态重建该内容,因此您可以模仿 UITableView 的内存管理。UIScrollView 会很高兴地进行垂直分页,这取决于它的 contentView 框架的形状。
换句话说,我怀疑让 UIScrollView 像表格一样比让 UITableView 像滚动视图一样分页更容易。