63 lines
1.7 KiB
Swift
63 lines
1.7 KiB
Swift
//
|
||
// RefreshStyle.swift
|
||
// GXM-CRM
|
||
//
|
||
// Created by 霹雳火 on 10/11/2017.
|
||
// Copyright © 2017 GuoXiaoMei. All rights reserved.
|
||
//
|
||
|
||
import Foundation
|
||
import MJRefresh
|
||
import RxSwift
|
||
import RxCocoa
|
||
|
||
public enum RefreshStatus: Int {
|
||
case invalidData // 无效的数据
|
||
case hasMoreData // 还有更多数据
|
||
case noMoreData // 没有更多数据
|
||
}
|
||
|
||
public enum RequestStatus {
|
||
case begin
|
||
case end
|
||
}
|
||
|
||
/**
|
||
设置刷新状态
|
||
*/
|
||
public extension UIScrollView {
|
||
|
||
func refresh(status: RefreshStatus, isEmpty: Bool, shouldForcedDisplay: Bool = false) {
|
||
// 刷新空数据占位
|
||
dl.emptyDataSet?.update(status: status, isEmpty: isEmpty, shouldForcedDisplay: shouldForcedDisplay)
|
||
|
||
mj_header?.endRefreshing()
|
||
switch status {
|
||
case .invalidData: // 无效的数据
|
||
mj_footer?.endRefreshing()
|
||
case .hasMoreData: // 还有更多数据
|
||
mj_footer?.endRefreshing()
|
||
mj_footer?.isHidden = false
|
||
case .noMoreData: // 没有更多数据
|
||
mj_footer?.endRefreshingWithNoMoreData()
|
||
mj_footer?.isHidden = false
|
||
}
|
||
// 数据为空,隐藏footer
|
||
if isEmpty {
|
||
mj_footer?.isHidden = true
|
||
}
|
||
}
|
||
}
|
||
|
||
public extension MJRefreshHeader {
|
||
func addFeedbackGenerator() {
|
||
rx.observeWeakly(MJRefreshState.self, "state").subscribe(onNext: { state in
|
||
guard state == .pulling else { return }
|
||
if #available(iOS 10.0, *) {
|
||
let generator = UIImpactFeedbackGenerator(style: .medium)
|
||
generator.impactOccurred()
|
||
}
|
||
}).disposed(by: rx.disposeBag)
|
||
}
|
||
}
|