JXPagingView
JXPagingView copied to clipboard
往上推的时候 为啥顶部的headerview一下就上去了 并没有根据手势滑动的距离慢慢推上去
public func listViewDidScrollCallback(callback: @escaping (UIScrollView) -> Void) {
listViewDidScrollCallback = callback
}
func scrollViewDidScroll(_ scrollView: UIScrollView) {
listViewDidScrollCallback?(collectionView)
}
这个调用了吗?
可以参考这个
class PageViewController: UIViewController {
private var scrollCallback: ((UIScrollView) -> Void)?
func setupUI() {
view.addSubview(scrollView)
scrollView.addSubview(contentView)
}
lazy var scrollView: UIScrollView = {
let scroll = UIScrollView()
scroll.showsVerticalScrollIndicator = false
scroll.delegate = self
return scroll
}()
lazy var contentView: UIView = {
let content = UIView()
return content
}()
}
extension PageViewController: UIScrollViewDelegate {
func scrollViewDidScroll(_ scrollView: UIScrollView) {
scrollCallback?(scrollView)
}
}
extension PageViewController: JXPagingViewListViewDelegate {
func listView() -> UIView { view }
func listScrollView() -> UIScrollView {
return scrollView
}
func listViewDidScrollCallback(callback: @escaping (UIScrollView) -> ()) {
self.scrollCallback = callback;
}
}
我这里通过这个方式解决了: 问题在于 func pagingView(_ pagingView: JXPagingView, initListAtIndex index: Int) -> JXPagingViewListViewDelegate 代理中返回的视图的 class 中,要加入这个
func scrollViewDidScroll(_ scrollView: UIScrollView) {
listViewDidScrollCallback?(scrollView)
}
可以参考下面这个代码:
class TestListView:UIView, UITableViewDataSource, UITableViewDelegate,JXPagingViewListViewDelegate {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
100
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
UITableViewCell()
}
func listScrollView() -> UIScrollView {
tableView
}
func scrollViewDidScroll(_ scrollView: UIScrollView) {
listViewDidScrollCallback?(scrollView)
}
private lazy var tableView: UITableView = {
let view = UITableView()
view.dataSource = self
view.delegate = self
view.rowHeight = 20
return view
}()
override init(frame: CGRect) {
super.init(frame: frame)
layout(tableView) { make in
make.edges.equalToSuperview()
}
tableView.reloadData()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}