TTARefresher 0.1.0

TTARefresher 0.1.0

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布上次发布2017 年 5 月
SwiftSwift 版本3.1
SPM支持 SPM

TobyoTenma 维护。



  • TMTBO

一个简单的下拉刷新方法,感谢 MJRefresh

内容

示例

要求

安装

# 文件结构

API

[使用方法](#How to use )

作者

许可证

示例

要运行示例项目,请克隆仓库,然后首先在 Example 目录中运行 pod install

要求

  • iOS >= 8.3
  • Swift >= 3.0

安装

  • TTARefresher 可以通过 CocoaPods 获取。要安装它,只需将以下行添加到您的 Podfile 中:pod "TTARefresher"

  • 手动导入:

    将 MJRefresh 文件夹中的所有文件拖到项目中,导入主文件:import TTARefresher

文件结构

	TTARefresherComponent
		|
		|- TTARefresherHeader
		|		|
		|		|- TTARefresherStateHeader
		|				|
		|				|- TTARefresherNormalHeader (DIRECTLY USE)
		|				|
		|				|- TTARefresherGifHeader (DIRECTLY USE)
		|
		|- TTARefresherFooter
				|
				|- TTARefresherAutoFooter
				|		|
				|		|- TTARefresherAutoStateFoote
				|				|
				|				|- TTARefresherAutoNormalFooter (DIRECTLY USE)
				|				|
				|				|- TTARefresherAutoGifFooter (DIRECTLY USE)
				|
				|- TTARefresherBackFooter
						|
						|- TTARefresherBackStateFoote
								|
								|- TTARefresherBackNormalFooter (DIRECTLY USE)
								|
								|- TTARefresherBackGifFooter (DIRECTLY USE)

API

命名空间

/// For the Instance Methods
public var ttaRefresher: TTARefresher.TTARefresherProxy<Self>

// /For the Static Methods
public static var TTARefresher: TTARefresher.TTARefresherProxy<Self>.Type 

/// Refresher Header    
public var header: TTARefresher.TTARefresherHeader?

/// Refresher Footer
public var footer: TTARefresher.TTARefresherFooter?

/// Data Count in total
public var totalDataCount: Int

刷新状态

	public enum TTARefresherState : Int {
		/// Normal State
	    case idle

	    case pulling

	    case refreshing

	    case willRefresh
	    
	    case noMoreData
	}

TTARefresherComponent

	/// Refresher State
	open var state: TTARefresher.TTARefresherState
	
	/// Whether the Refresher is Refreshing
	public var isRefreshing: Bool
	
	/// Current pulling Percentage
	open var pullingPercent: CGFloat
	
	/// Whether Auto Change the Refresher Alpha
	public var isAutoChangeAlpha: Bool

	/// The Refresher's superView, Readonly for subviews
	public fileprivate(set) var scrollView: UIScrollView?

	/// The ScrollView Original inset, Readonly for subviews
	public internal(set) var scrollViewOriginalInset: UIEdgeInsets
	
	/// Refresher Targer
	public var refreshingTarget: AnyObject?
	
	/// Refresher Action
	public var refreshingAction: Selector?
	
	/// Refresher Handler
	public var refreshingHandler: TTARefresher.TTARefresherComponentRefreshingHandler?
	
	/// Excuate While Begin Refreshing Completed
	public var beginRefreshingCompletionHandler: TTARefresher.TTARefresherComponentBeginCompletionHandler?
	
	/// Excuate While End Refreshing Completed
	public var endRefreshingCompletionHandler: TTARefresher.TTARefresherComponentEndCompletionHandler?

	/// Set Refreshing Target and Action
	public func setRefreshingTarget(aTarget: AnyObject, anAction: Selector)

	/// Begin Refreshing
	public func beginRefreshing(_ completionHandler: TTARefresher.TTARefresherComponentBeginCompletionHandler? = default)
	
	/// End Refreshing
	public func endRefreshing(_ completionHandler: TTARefresher.TTARefresherComponentEndCompletionHandler? = default)

TTARefresherStateHeader

	/// Refresher Header State Label
	lazy public var stateLabel: UILabel
	
	/// Refresher Header Time Label
	public var lastUpdatedTimeLabel: UILabel

	/// The margin between Label and left images
	public var labelLeftInset: CGFloat
	
	/// Set Custom Titles for State
	public func set(title: String, for state: TTARefresher.TTARefresherState)

TTARefresherFooter

	/// If true, the footer will be shown when there are data, otherwise, footer will be hidden
public var isAutoHidden: Bool

	/// The ContentInset Bottom to ignore
	public var ignoredScrollViewContentInsetBottom: CGFloat
	
	/// Rest Refresher state `.noMoreData` to `.idle`
	public func resetNoMoreData()
	
	/// End Refresher and Set State With `.noMoreData`
	public func endRefreshWithNoMoreData()

TTARefresherAutoFooter & TTARefresherBackFooter

	/// Whether Footer Auto Refresh
	public var isAutoRefresh: Bool
	
	/// The percent when the footer appear will get refresh, default is 1.0
	public var triggerAutoRefreshPercent: CGFloat
	
	/// Whether Hide Footer
	open var isHidden: Bool

TTARefresherAutoStateFoote & TTARefresherBackStateFooter

	/// State Label
	open var stateLabel: UILabel
	
	/// Set Custom Titles for state
	public func set(title: String, for state: TTARefresher.TTARefresherState)
	
	/// Title for state
	public func title(for state: TTARefresher.TTARefresherState) -> String?

TTARefresherAutoNormalFooter & TTARefresherBackNormalFooter & TTARefresherNormalHeader

	/// Refresher Footer/ Header Indicator Style, default is `.gray`
	public var indicatorStyle: UIActivityIndicatorViewStyle
	
	/// Back Normal Footer's Arrow Image View
	public var arrowImageView: UIImageView

TTARefresherAutoGifFooter & TTARefresherBackGifFooter & TTARefresherGifHeader

	/// Gif Image View
	open var gifImageView: UIImageView
	
	/// Set Images And Animation Time for State
	public func set(images: [UIImage]?, duration: TimeInterval?, for state: TTARefresher.TTARefresherState)

	/// Set Images For State, Default Time is `images.count * 0.1`
	public func set(images: [UIImage]?, for state: TTARefresher.TTARefresherState)

extension TTARefresherComponent {

    open func prepare()

    open func placeSubviews()

    open func scrollViewContentSizeDidChange(_ change: [NSKeyValueChangeKey : Any]?)

    open func scrollViewContentOffsetDidChange(_ change: [NSKeyValueChangeKey : Any]?)

    open func scrollViewPanStateDidChange(_ change: [NSKeyValueChangeKey : Any]?)
}

使用方法

头部


默认头部

    let header = TTARefresherNormalHeader {
        self.loadNew()
    }
   // or
   let header = TTARefresherNormalHeader(refreshingTarget: self, refreshingAction: #selector(loadNew))

Default Header

Gif 头部

    let header = TTARefresherGifHeader {
        self.loadNew()
    }
   // or
    let header = TTARefresherGifHeader(refreshingTarget: self, refreshingAction: #selector(loadNew))
   // The margin between label and images
   header.labelLeftInset = 10
   let (idleImages, refreshingImages) = prepareAnimationImages()
   header.set(images: idleImages, for: .idle)
   header.set(images: refreshingImages, for: .refreshing)

Gif Header

头部隐藏时间

    header.lastUpdatedTimeLabel.isHidden = true

Header Hide Time

头部隐藏时间和状态

    header.stateLabel.isHidden = true
    header.lastUpdatedTimeLabel.isHidden = true

Header Hide Time And State

头部自定义文本

    header.set(title: "Pull Me Down", for: .idle)
    header.set(title: "Release Me To Refresh", for: .pulling)
    header.set(title: "Come on, I'm getting the data", for: .refreshing)

Header Hide Time And State

页脚


页脚默认自动

    let footer = TTARefresherAutoNormalFooter {
        self.loadMore()
    }
   // or
   let footer  = TTARefresherAutoNormalFooter(refreshingTarget: self, refreshingAction: #selector(endLoadMore))

Footer Default Auto

自动 Gif 页脚

    let footer = TTARefresherAutoGifFooter {
        self.loadMore()
    }
   // or
    let footer = TTARefresherAutoGifFooter(refreshingTarget: self, refreshingAction: #selector(loadMore))
    let (idleImages, refreshingImages) = prepareAnimationImages()
    footer.set(images: idleImages, for: .idle)
    footer.set(images: refreshingImages, for: .refreshing)

Auto Gif Footer

返回页脚

	let footer = TTARefresherBackNormalFooter {
        self.loadMore()
    }
    // or
    let footer = TTARefresherBackNormalFooter(refreshingTarget: self, refreshingAction: #selector(loadMore))

Back Footer

自动 Gif 隐藏状态

	footer.stateLabel.isHidden = true

Auto Gif Hide State


作者

TMTBO, 许可协议

TTARefresher 在 MIT 许可协议下可用。有关更多信息,请参阅 LICENSE 文件。