您的位置:首页 > 移动开发 > Swift

swift 自定义(超简单)上拉加载(gif动画)

2016-09-18 13:18 288 查看
针对swift 2.0

使用上拉加载,通常用于tableview,或者collectionview等继承scrollview的视图

实现上拉加载,思路非常简单,就是判断,当前的视图的容量与当前的currentOffset的关系。

精确点就是:offset.y + bounds.size.height - inset.bottom 与 size.height的关系

其具体为:

var offset = scrollView.contentOffset
var bounds = scrollView.bounds
var size = scrollView.contentSize
var inset = scrollView.contentInset
var currentOffset: CGFloat = offset.y + bounds.size.height - inset.bottom
var maximumOffset: CGFloat = size.height


如果 currentOffset >= maximumOffset +50 那么就开始刷新数据,其中50 是自己可根据需要改变的拉伸常量。

当我们进行上拉加载的时候回看到加载动画,例如MJRefresh的菊花等,这个完全可以自己写,而且十分简单。方法如下

当我们触发上拉加载的时候可以进行网络数据的请求,这个时候在整个视图的最上面一层添加一个view,view上是你要添加的动画,可以是任意的。

如图:



这里使用定时器,代替网络请求:

if currentOffset >= maximumOffset+50 {
self.view.addSubview(refreshView)
refreshView.frame = self.view.frame
refreshView.backgroundColor = UIColor.init(colorLiteralRed: 0, green: 0, blue: 0, alpha: 0.2)
var path = NSBundle.mainBundle().pathForResource("catLittle", ofType: "gif")!

var gifData = NSData(contentsOfFile: path)

var webView = UIWebView(frame: CGRectMake(self.view.frame.size.width/2-100, self.view.frame.size.height/2-100, 200, 200))
self.view.addSubview(webView)
webView.layer.masksToBounds = true
webView.layer.cornerRadius = 5
webView.scalesPageToFit = true
webView.scrollView.scrollEnabled = false
webView.backgroundColor = UIColor.clearColor()
webView.opaque = false
webView.loadData(gifData!, MIMEType: "image/gif", textEncodingName: "", baseURL: NSURL.init())
refreshView.addSubview(webView)

self.AFNTimer = NSTimer.scheduledTimerWithTimeInterval(2.5, target: self, selector: "refreshData", userInfo: nil, repeats: false)
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: