自作UIRefreshControl
let REFRESH_HEIGHT:CGFloat = 66.0
var readyRefresh:Bool = false
var defaultInsetTop:CGFloat = 0.0
func scrollViewDidScroll(scrollView: UIScrollView) {
if self.readyRefresh {
if -self.REFRESH_HEIGHT < scrollView.contentInset.top + scrollView.contentOffset.y {
self.readyRefresh = false
}
}else {
if -self.REFRESH_HEIGHT >= scrollView.contentInset.top + scrollView.contentOffset.y {
self.readyRefresh = true
}
}
}
func scrollViewDidEndDragging(scrollView: UIScrollView, willDecelerate decelerate: Bool) {
if !self.readyRefresh {
return
}
self.readyRefresh = false
self.defaultInsetTop = self.tableView.contentInsetTop
UIView.setAnimationBeginsFromCurrentState(true)
UIView.animateWithDuration(NSTimeInterval(0.3), delay: 0.0, usingSpringWithDamping: 1.0, initialSpringVelocity: 0.0, options: UIViewAnimationOptions.CurveLinear,
animations: { () -> Void in
self.tableView.contentInsetTop = self.REFRESH_HEIGHT
},
completion: { (finish:Bool) -> Void in
}
)
self.executeRefresh()
}
private func endRefresh(){
UIView.setAnimationBeginsFromCurrentState(true)
UIView.animateWithDuration(NSTimeInterval(0.3), delay: 0.0, usingSpringWithDamping: 1.0, initialSpringVelocity: 0.0, options: UIViewAnimationOptions.CurveLinear,
animations: { () -> Void in
self.tableView.contentInsetTop = self.defaultInsetTop
},
completion: { (finish:Bool) -> Void in
}
)
}
private func executeRefresh(){
//処理
self.endRefresh()
}