Swift 4.2 See merge request helper-ios/RMRPullToRefresh!5 |
||
|---|---|---|
| Classes | ||
| Example | ||
| .gitignore | ||
| LICENSE | ||
| README.md | ||
| RMRPullToRefresh.podspec | ||
README.md
RMRPullToRefresh
==
Репозиторий pull to refresh контрола для UIScrollView, UITableView, UICollectionView для платформы iOS.
Как установить?
pod 'RMRPullToRefresh', :git => "git@git.redmadrobot.com:helper-ios/RMRPullToRefresh.git"
Как добавить?
import RMRPullToRefresh
var pullToRefresh: RMRPullToRefresh?
pullToRefresh = RMRPullToRefresh(scrollView: tableView,
position: .Top) { [weak self] _ in // .Top или .Bottom
// Загрузка данных
self?.service.load() { _ in
// Завершение загрузки
self?.pullToRefresh?.stopLoading()
})
}
Чтобы завершить анимацию, необходимо выполнить:
pullToRefresh?.stopLoading() // Завершиться с результатом .Success
или
pullToRefresh?.stopLoading(.Success) // .Success, .NoUpdates, .Error
Позиции
public enum RMRPullToRefreshPosition: Int {
case Top // Для добавления контрола сверху скрола
case Bottom // Для добавления контроль снизу скрола
}
Состояния
public enum RMRPullToRefreshState: Int {
case Stopped // Нет скролинга, нет загрузки
case Dragging // Скролинг
case Loading // Загрузка
}
Тип результата
public enum RMRPullToRefreshResultType: Int {
case Success // Загрузка завершилась успешно и есть обновления
case NoUpdates // Загрузка завершилась успешно, но обновлений нет
case Error // Загрузка завершилась с ошибкой
}
Как кастомизировать?
Существует два метода для конфигурации кастомных view:
func configureView(view :RMRPullToRefreshView, state:RMRPullToRefreshState, result:RMRPullToRefreshResultType)
func configureView(view :RMRPullToRefreshView, result:RMRPullToRefreshResultType) // Будет сконфигурировано для состояний .Loading, .Dragging и .Stopped
Пример:
// Конфигурируем view для состояний .Dragging и .Loading для результата .Success
if let pullToRefreshView = BeelineView.XIB_VIEW() {
pullToRefresh?.configureView(pullToRefreshView, state: .Dragging, result: .Success)
pullToRefresh?.configureView(pullToRefreshView, state: .Loading, result: .Success)
}
Кастомная view должна наследоваться от класса RMRPullToRefreshView и для анимирования должны быть реализованы методы протокола RMRPullToRefreshViewProtocol:
// Подготовка к анимации загрузки
// Вызываться перед beginLoadingAnimation()
public func prepareForLoadingAnimation(startProgress: CGFloat) {}
// Начало анимации
public func beginLoadingAnimation() {}
// Завершение анимации
// Будет вызываться сразу после завершения загрузки
public func willEndLoadingAnimation() {}
// Завершение анимации
// Будет вызывать через время, равное hideDelay после завершения загрузки
// @param hidden - флаг будет скрыт контрол или нет после завершения анимации
public func didEndLoadingAnimation(hidden: Bool) {}
// Изменения прогресса скролинга
public func didChangeDraggingProgress(progress: CGFloat) {}
Настройки
Для задания RedMadRobot дизайна:
pullToRefresh?.setupDefaultSettings()
Изменить высоту (по умолчанию 90.0):
pullToRefresh?.height = 70.0
Изменить цвет бэкграунда (по умолчанию whiteColor()):
pullToRefresh?.backgroundColor = UIColor(red: 16.0/255.0,
green: 192.0/255.0,
blue: 119.0/255.0,
alpha: 1.0)
Для задания времени закрытия контрола (по умолчанию 0.0):
pullToRefresh?.setHideDelay(5.0, result: .Success) // .Success, .NoUpdates, .Error
Если не хотим скрывать контрол с ошибкой (не забудьте установить view для .Error):
pullToRefresh?.hideWhenError = false