Skip to content
This repository was archived by the owner on Jul 1, 2020. It is now read-only.

Commit 3ccbcfa

Browse files
Update README and fix no more data issue
1 parent 115b405 commit 3ccbcfa

6 files changed

Lines changed: 77 additions & 43 deletions

File tree

Demo/Demo/ConfigHeaderFooterController.swift

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class ConfigDefaultHeaderFooterController: UITableViewController {
2323
header.setText("Refreshing...", mode: .refreshing)
2424
header.setText("Failed", mode: .refreshFailure)
2525
header.tintColor = UIColor.orange
26-
26+
header.imageRenderingWithTintColor = true
2727
header.durationWhenHide = 0.4
2828
self.tableView.configRefreshHeader(with: header) { [weak self] in
2929
delay(1.5, closure: {
@@ -39,11 +39,15 @@ class ConfigDefaultHeaderFooterController: UITableViewController {
3939
footer.setText("Tap to load more", mode: .tapToRefresh)
4040
footer.textLabel.textColor = UIColor.orange
4141
footer.refreshMode = .tap
42-
self.tableView.configRefreshFooter(with: footer) { [weak self] in
42+
self.tableView.configRefreshFooter(with: footer) {
4343
delay(1.5, closure: {
44-
self?.models.append(random100())
45-
self?.tableView.reloadData()
46-
self?.tableView.switchRefreshFooter(to: .normal)
44+
self.models.append(random100())
45+
self.tableView.reloadData()
46+
if self.models.count > 12{
47+
self.tableView.switchRefreshFooter(to: .removed)
48+
}else{
49+
self.tableView.switchRefreshFooter(to: .normal)
50+
}
4751
})
4852
}
4953
}

Demo/Demo/DefaultTableViewController.swift

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,22 +21,24 @@ fileprivate func < <T : Comparable>(lhs: T?, rhs: T?) -> Bool {
2121
}
2222

2323
class DefaultTableViewController:UITableViewController{
24+
let originalModes = [1,2,3,4,5,6,7,8,9,10]
2425
var models = [1,2,3,4,5,6,7,8,9,10]
2526
override func viewDidLoad() {
2627
super.viewDidLoad()
2728
self.tableView.tableFooterView = UIView(frame: CGRect.zero)
2829
self.tableView.configRefreshHeader(with: DefaultRefreshHeader.header()) {
2930
delay(1.5, closure: {
30-
self.models = self.models.map({_ in random100()})
31+
self.models = self.originalModes.map({_ in random100()})
3132
self.tableView.reloadData()
3233
self.tableView.switchRefreshHeader(to: .normal(.success, 0.5))
34+
self.tableView.switchRefreshFooter(to: .normal)
3335
})
3436
}
3537
self.tableView.configRefreshFooter(with: DefaultRefreshFooter.footer()) {
3638
delay(1.5, closure: {
3739
self.models.append(random100())
3840
self.tableView.reloadData()
39-
if self.models.count < 15{
41+
if self.models.count < 12 {
4042
self.tableView.switchRefreshFooter(to: .normal)
4143
}else{
4244
self.tableView.switchRefreshFooter(to: .noMoreData)

Demo/Demo/ElasticHeaderTableViewController.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@ import UIKit
1313
class ElasticHeaderTableViewController:BaseTableViewController{
1414
override func viewDidLoad() {
1515
super.viewDidLoad()
16-
//Setup
17-
// self.tableView.backgroundColor = UIColor(red: 232.0/255.0, green: 234.0/255.0, blue: 235.0/255.0, alpha: 1.0)
1816
let elasticHeader = ElasticRefreshHeader()
1917
self.tableView.configRefreshHeader(with: elasticHeader) { [weak self] in
2018
delay(1.5, closure: {

README.md

Lines changed: 47 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -85,17 +85,17 @@ github "LeoMobileDeveloper/PullToRefreshKit"
8585

8686

8787
```
88-
self.tableView.setUpHeaderRefresh { [weak self] in
89-
delay(1.5, closure: {
90-
self?.tableView.endHeaderRefreshing(.Success)
88+
self.tableView.configRefreshHeader(with: DefaultRefreshHeader.header()) {
89+
delay(2, closure: {
90+
self.tableView.switchRefreshHeader(to: .normal(.success, 0.5))
9191
})
92-
}
92+
}
9393
```
94-
Add a delay if you want user to see the result of refresh result
9594

96-
```
97-
self?.tableView.endHeaderRefreshing(.Success,delay: 0.5)
95+
If you do not want any delay:
9896

97+
```
98+
self.tableView.switchRefreshHeader(to: .normal(.none, 0.0))
9999
```
100100

101101
<img src="https://raw.github.com/LeoMobileDeveloper/PullToRefreshKit/master/Screenshot/gif1.gif" width="320">
@@ -109,33 +109,46 @@ Support three mode to fire refresh action
109109
- [x] Scroll and Tap
110110

111111
```
112-
self.tableView.setUpFooterRefresh { [weak self] in
113-
delay(1.5, closure: {
114-
self?.tableView.endFooterRefreshing()
115-
})
116-
}
112+
self.tableView.configRefreshFooter(with: DefaultRefreshFooter.footer()) {
113+
delay(1.5, closure: {
114+
self.tableView.switchRefreshFooter(to: .normal)
115+
})
116+
};
117117
```
118118

119119
<img src="https://raw.github.com/LeoMobileDeveloper/PullToRefreshKit/master/Screenshot/gif2.gif" width="320">
120120

121+
Remove footer:
122+
123+
```
124+
self.tableView.switchRefreshFooter(to: .removed)
125+
```
126+
127+
No more Data:
128+
129+
``` self.tableView.switchRefreshFooter(to: .noMoreData)
130+
```
121131

122132
### Pull left to exit
123133

124134
```
125-
scrollView.setUpLeftRefresh { [weak self] in
126-
self?.navigationController?.popViewControllerAnimated(true)
127-
}
135+
scrollView.configSideRefresh(with: DefaultRefreshLeft.left(), at: .left) {
136+
self.navigationController?.popViewController(animated: true)
137+
};
128138
```
129139

130140
<img src="https://raw.github.com/LeoMobileDeveloper/PullToRefreshKit/master/Screenshot/gif3.gif" width="200">
131141

132-
### Pull right to enter
142+
### Pull right to Pop
133143

134144
```
135-
scrollView.setUpRightRefresh { [weak self] in
136-
let nvc = DefaultBannerController()
137-
self?.navigationController?.pushViewController(nvc, animated: true)
138-
}
145+
let right = DefaultRefreshRight.right()
146+
right.setText("👈滑动关闭", mode: .scrollToAction)
147+
right.setText("松开关闭", mode: .releaseToAction)
148+
right.textLabel.textColor = UIColor.orange
149+
scrollView.configSideRefresh(with: right, at: .right) {
150+
self.navigationController?.popViewController(animated: true)
151+
};
139152
```
140153

141154
<img src="https://raw.github.com/LeoMobileDeveloper/PullToRefreshKit/master/Screenshot/gif4.gif" width="200">
@@ -145,20 +158,22 @@ Support three mode to fire refresh action
145158
PullToRefershKit offer `SetUp` operator,for example
146159

147160
```
148-
self.tableView.setUpHeaderRefresh { [weak self] in
161+
let header = DefaultRefreshHeader.header()
162+
header.setText("Pull to refresh", mode: .pullToRefresh)
163+
header.setText("Release to refresh", mode: .releaseToRefresh)
164+
header.setText("Success", mode: .refreshSuccess)
165+
header.setText("Refreshing...", mode: .refreshing)
166+
header.setText("Failed", mode: .refreshFailure)
167+
header.tintColor = UIColor.orange
168+
header.imageRenderingWithTintColor = true
169+
header.durationWhenHide = 0.4
170+
self.tableView.configRefreshHeader(with: header) { [weak self] in
149171
delay(1.5, closure: {
150-
self?.tableView.endHeaderRefreshing(.Success)
172+
self?.models = (self?.models.map({_ in random100()}))!
173+
self?.tableView.reloadData()
174+
self?.tableView.switchRefreshHeader(to: .normal(.success, 0.3))
151175
})
152-
}.SetUp { (header) in
153-
header.setText("Pull to refresh", mode: .pullToRefresh)
154-
header.setText("Release to refresh", mode: .releaseToRefresh)
155-
header.setText("Success", mode: .refreshSuccess)
156-
header.setText("Refreshing...", mode: .refreshing)
157-
header.setText("Failed", mode: .refreshFailure)
158-
header.setText("Error", mode: .refreshError)
159-
header.textLabel.textColor = UIColor.orangeColor()
160-
header.imageView.image = nil
161-
}
176+
};
162177
```
163178

164179
### Customize

Source/Classes/Footer.swift

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ class RefreshFooterContainer:UIView{
198198
var attachedScrollView:UIScrollView!
199199
weak var delegate:RefreshableFooter?
200200
fileprivate var _state:RefreshFooterState = .idle
201-
var state:RefreshFooterState{
201+
var state: RefreshFooterState{
202202
get{
203203
return _state
204204
}
@@ -208,13 +208,16 @@ class RefreshFooterContainer:UIView{
208208
}
209209
_state = newValue
210210
if newValue == .refreshing{
211+
self.isUserInteractionEnabled = true
211212
DispatchQueue.main.async(execute: {
212213
self.delegate?.didBeginRefreshing()
213214
self.refreshAction?()
214215
})
215216
}else if newValue == .noMoreData{
217+
self.isUserInteractionEnabled = false
216218
self.delegate?.didUpdateToNoMoreData()
217219
}else if newValue == .idle{
220+
self.isUserInteractionEnabled = true
218221
self.delegate?.didResetToDefault()
219222
}
220223
}

Source/Classes/Header.swift

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,13 @@ open class DefaultRefreshHeader: UIView, RefreshableHeader {
8484
open class func header()->DefaultRefreshHeader{
8585
return DefaultRefreshHeader(frame: CGRect(x: 0, y: 0, width:UIScreen.main.bounds.size.width , height: 55.0));
8686
}
87+
open var imageRenderingWithTintColor = false{
88+
didSet{
89+
if imageRenderingWithTintColor{
90+
imageView.image = imageView.image?.withRenderingMode(.alwaysTemplate)
91+
}
92+
}
93+
}
8794
open let spinner:UIActivityIndicatorView = UIActivityIndicatorView(activityIndicatorStyle: .gray)
8895
open let textLabel:UILabel = UILabel(frame: CGRect(x: 0,y: 0,width: 140,height: 40))
8996
open let imageView:UIImageView = UIImageView(frame: CGRect.zero)
@@ -174,11 +181,17 @@ open class DefaultRefreshHeader: UIView, RefreshableHeader {
174181
textLabel.text = textDic[.pullToRefresh]
175182
imageView.image = UIImage(named: "arrow_down", in: Bundle(for: DefaultRefreshHeader.self), compatibleWith: nil)
176183
}
184+
if imageRenderingWithTintColor{
185+
imageView.image = imageView.image?.withRenderingMode(.alwaysTemplate)
186+
}
177187
}
178188
open func didCompleteEndRefershingAnimation(_ result:RefreshResult) {
179189
textLabel.text = textDic[.pullToRefresh]
180190
self.isHidden = true
181191
imageView.image = UIImage(named: "arrow_down", in: Bundle(for: DefaultRefreshHeader.self), compatibleWith: nil)
192+
if imageRenderingWithTintColor{
193+
imageView.image = imageView.image?.withRenderingMode(.alwaysTemplate)
194+
}
182195
}
183196
open func didBeginRefreshingState() {
184197
self.isHidden = false
@@ -227,7 +240,6 @@ open class RefreshHeaderContainer:UIView{
227240
var oldInset = self.attachedScrollView.contentInset
228241
oldInset.top = oldInset.top + self.insetTDelta
229242
self.attachedScrollView.contentInset = oldInset
230-
231243
}, completion: { (finished) in
232244
self.delegate?.didCompleteEndRefershingAnimation(self.currentResult)
233245
})

0 commit comments

Comments
 (0)