ZVRefreshing
(https://github.com/Carthage/Carthage )
ZRefreshing 是使用纯Swift开发,简单易用刷新控件。
InstallationCocoapod第一步,安装 CocoaPods,关于Pods更多的介绍和功能,请移步CocoaPods 主页;
$ sudo gem install cocoapods第二步, 使用CocoaPods集成 ZVRefreshing ,并写入到你的Podfile中;
source 'https://github.com/CocoaPods/Specs.git' platform :ios, '8.0' target 'TargetName' do use_frameworks! pod 'ZVRefreshing', :git => 'https://github.com/zevwings/ZVRefreshing.git' end最后,使用CocoaPods 安装你的依赖库。
$ pod installCarthage第一步,使用Homebrew安装Carthage,关于Carthage更多的介绍和功能,请移步Carthage 主页;
$ brew update $ brew install carthage第二步, 使用Carthage集成 ZVRefreshing ,并写入到你的Cartfile中;
github 'zevwings/ZVRefreshing' ~> 0.0.1第三步,使用Carthage 安装依赖;
$ carthage update最后,在Carthage/Build文件夹下面找到 ZVRefreshing.framework 并拖到Targets -> Genral的Embedded Binaries下。
Manual第一步,下载本项目,并将 ZVRefreshing.xcodeproj 拖到你的目录下;
第二步,在你的项目配置找到 Targets -> Genral -> Embedded Binaries,点击 + 按钮, 选择ZVRefreshing.framework 并添加到工程。
Usage在需要使用 ZVRefreshing时,论文,使用 import ZVRefreshing导入便可以使用
Header使用Target-Action初始化方法,初始化Header
let header = RefreshNormalHeader() header?.addTarget(self, action: #selector(DetailTableViewController.refreshAction(_:))) self.tableView.header = header使用Block初始化方法,初始化Header
let header = RefreshHeader(refreshHandler: { // Your code }) self.tableView.header = header给Header添加 Target and Action
header?.addTarget(self, action: #selector(ViewController.refreshAction(_:)) func refreshAction(_ sender: RefreshComponent) { // your code }开始更新
self.tableView.header?.beginRefreshing()停止更新
self.tableView.header?.beginRefreshing()隐藏上次更新时间文本
header.lastUpdatedTimeLabel.isHidden = true隐藏状态文本
header.stateLabel.isHidden = true自定义状态文本
header.setTitle('下拉后更新...', forState: .idle)自定义动画图片
header.setImages(refreshingImages, state: .refreshing) header.setImages(refreshingImages, duration: 1.0, state: .refreshing)自定义 ActivityIndicator.activityIndicatorViewStyle 属性
header.activityIndicatorViewStyle = .whiteLarge自定义 TableView.contentInset属性时,需要设置 RefreshComponent.ignoredScrollViewContentInsetTop属性
self.tableView.contentInset = UIEdgeInsets(top: 30, left: 0, bottom:0, right: 0) header.ignoredScrollViewContentInsetTop = 30自定义 ArrowImageView/activityIndicator 与 状态文本间距
header.labelInsetLeft = 32.0Footer使用Target-Action初始化方法,初始化Footer
let footer = RefreshFooter(target: self, action: #selector(DetailTableViewController.refreshAction(_:))) self.tableView.footer = footer使用Block初始化方法,初始化Footer
let footer = RefreshFooter { } self.tableView.footer = footer给Footer添加Target-Action
footer?.addTarget(self, action: #selector(ViewController.refreshAction(_:)) func refreshAction(_ sender: RefreshComponent) { // your code }开始更新
self.tableView.footer?.beginRefreshing()停止更新
self.tableView.footer?.beginRefreshing()隐藏状态文本
footer.stateLabel.isHidden = true自定义状态文本
footer.setTitle('下拉后更新...', forState: .idle)自定义动画图片
footer.setImages(refreshingImages, state: .refreshing) footer.setImages(refreshingImages, duration: 1.0, state: .refreshing)自定义 ActivityIndicator.activityIndicatorViewStyle 属性
footer.activityIndicatorViewStyle = .whiteLarge自定义 TableView.contentInset属性时,需要设置 RefreshComponent.ignoredScrollViewContentInsetTop属性
self.tableView.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: 30, right: 0) footer.ignoredScrollViewContentInsetBottom自定义 ActivityIndicator 与 状态文本间距
footer.labelInsetLeft = 32.0自定义方法当需要自定义刷新控件时,可以继承RefreshComponent或者其子类,支持重写的属性,开题报告,方法如下
控件刷新状态
open var state: RefreshState控件色调
open override var tintColor: UIColor!控件初始化
open func prepare() {}控件位置
open func placeSubViews() {}UIScrollView属性监听方法
监听UIScrollView.contentOffset
open func scrollViewContentOffsetDidChanged(_ change: [NSKeyValueChangeKey: Any]?) {}监听UIScrollView.contentSize
open func scrollViewContentSizeDidChanged(_ change: [NSKeyValueChangeKey: Any]?) {}监听UIScrollView.panGestureRecognizer.state
open func scrollViewPanStateDidChanged(_ change: [NSKeyValueChangeKey: Any]?) {}