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

Commit a769e1b

Browse files
Merge pull request #22 from LeoMobileDeveloper/V0.8
V0.8
2 parents a62ff46 + 3ccbcfa commit a769e1b

29 files changed

Lines changed: 805 additions & 512 deletions

Demo/Demo.xcodeproj/project.pbxproj

Lines changed: 104 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,107 @@
166166
name = Products;
167167
sourceTree = "<group>";
168168
};
169+
B38F54FE1F976D6000993075 /* Default */ = {
170+
isa = PBXGroup;
171+
children = (
172+
B3B543091F062A9700408912 /* ConfigHeaderFooterController.swift */,
173+
B3B543081F062A9700408912 /* ConfigBannerController.swift */,
174+
B3B5430C1F062A9700408912 /* DefaultBannerController.swift */,
175+
B3B5430D1F062A9700408912 /* DefaultCollectionViewController.swift */,
176+
B3B5430E1F062A9700408912 /* DefaultScrollViewController.swift */,
177+
B3B5430F1F062A9700408912 /* DefaultTableViewController.swift */,
178+
B3B543101F062A9700408912 /* DefaultWebViewController.swift */,
179+
);
180+
name = Default;
181+
sourceTree = "<group>";
182+
};
183+
B38F55001F976DF000993075 /* Util */ = {
184+
isa = PBXGroup;
185+
children = (
186+
B3B543071F062A9700408912 /* BaseTableViewController.swift */,
187+
B3B543551F062A9700408912 /* RowModel.swift */,
188+
B3B543561F062A9700408912 /* SectionModel.swift */,
189+
B3B543C91F062A9700408912 /* Util.swift */,
190+
);
191+
name = Util;
192+
sourceTree = "<group>";
193+
};
194+
B38F55011F976DFF00993075 /* Custom */ = {
195+
isa = PBXGroup;
196+
children = (
197+
B38F55031F976E3200993075 /* Taobao */,
198+
B38F55081F976E6500993075 /* Elastic */,
199+
B38F55071F976E5D00993075 /* Yahoo */,
200+
B38F55061F976E4C00993075 /* Dianping */,
201+
B38F55021F976E2A00993075 /* QQVideo */,
202+
B38F55051F976E4300993075 /* Curve */,
203+
B38F55041F976E3A00993075 /* Youku */,
204+
);
205+
name = Custom;
206+
sourceTree = "<group>";
207+
};
208+
B38F55021F976E2A00993075 /* QQVideo */ = {
209+
isa = PBXGroup;
210+
children = (
211+
B3B543531F062A9700408912 /* QQVideoRefreshHeader.swift */,
212+
B3B543541F062A9700408912 /* QQVideoTableViewController.swift */,
213+
);
214+
name = QQVideo;
215+
sourceTree = "<group>";
216+
};
217+
B38F55031F976E3200993075 /* Taobao */ = {
218+
isa = PBXGroup;
219+
children = (
220+
B3B543C71F062A9700408912 /* TaoBaoRefreshHeader.swift */,
221+
B3B543C81F062A9700408912 /* TaobaoTableViewController.swift */,
222+
);
223+
name = Taobao;
224+
sourceTree = "<group>";
225+
};
226+
B38F55041F976E3A00993075 /* Youku */ = {
227+
isa = PBXGroup;
228+
children = (
229+
B3B543D01F062A9700408912 /* YoukuRefreshHeader.swift */,
230+
B3B543D11F062A9700408912 /* YoukuTableViewController.swift */,
231+
);
232+
name = Youku;
233+
sourceTree = "<group>";
234+
};
235+
B38F55051F976E4300993075 /* Curve */ = {
236+
isa = PBXGroup;
237+
children = (
238+
B3B5430A1F062A9700408912 /* CurveMaskTableViewController.swift */,
239+
B3B5430B1F062A9700408912 /* CurveRefreshHeader.swift */,
240+
);
241+
name = Curve;
242+
sourceTree = "<group>";
243+
};
244+
B38F55061F976E4C00993075 /* Dianping */ = {
245+
isa = PBXGroup;
246+
children = (
247+
B3B543111F062A9700408912 /* DianpingRefreshHeader.swift */,
248+
B3B543121F062A9700408912 /* DianpingTableviewController.swift */,
249+
);
250+
name = Dianping;
251+
sourceTree = "<group>";
252+
};
253+
B38F55071F976E5D00993075 /* Yahoo */ = {
254+
isa = PBXGroup;
255+
children = (
256+
B3B543CB1F062A9700408912 /* YahooWeatherRefreshHeader.swift */,
257+
B3B543CC1F062A9700408912 /* YahooWeatherTableViewController.swift */,
258+
);
259+
name = Yahoo;
260+
sourceTree = "<group>";
261+
};
262+
B38F55081F976E6500993075 /* Elastic */ = {
263+
isa = PBXGroup;
264+
children = (
265+
B3B543131F062A9700408912 /* ElasticHeaderTableViewController.swift */,
266+
);
267+
name = Elastic;
268+
sourceTree = "<group>";
269+
};
169270
B3B541181F061C3800408912 /* Products */ = {
170271
isa = PBXGroup;
171272
children = (
@@ -194,30 +295,9 @@
194295
isa = PBXGroup;
195296
children = (
196297
B3B543521F062A9700408912 /* MainViewController.swift */,
197-
B3B543531F062A9700408912 /* QQVideoRefreshHeader.swift */,
198-
B3B543541F062A9700408912 /* QQVideoTableViewController.swift */,
199-
B3B543551F062A9700408912 /* RowModel.swift */,
200-
B3B543561F062A9700408912 /* SectionModel.swift */,
201-
B3B543C71F062A9700408912 /* TaoBaoRefreshHeader.swift */,
202-
B3B543C81F062A9700408912 /* TaobaoTableViewController.swift */,
203-
B3B543C91F062A9700408912 /* Util.swift */,
204-
B3B543CB1F062A9700408912 /* YahooWeatherRefreshHeader.swift */,
205-
B3B543CC1F062A9700408912 /* YahooWeatherTableViewController.swift */,
206-
B3B543D01F062A9700408912 /* YoukuRefreshHeader.swift */,
207-
B3B543D11F062A9700408912 /* YoukuTableViewController.swift */,
208-
B3B543071F062A9700408912 /* BaseTableViewController.swift */,
209-
B3B543081F062A9700408912 /* ConfigBannerController.swift */,
210-
B3B543091F062A9700408912 /* ConfigHeaderFooterController.swift */,
211-
B3B5430A1F062A9700408912 /* CurveMaskTableViewController.swift */,
212-
B3B5430B1F062A9700408912 /* CurveRefreshHeader.swift */,
213-
B3B5430C1F062A9700408912 /* DefaultBannerController.swift */,
214-
B3B5430D1F062A9700408912 /* DefaultCollectionViewController.swift */,
215-
B3B5430E1F062A9700408912 /* DefaultScrollViewController.swift */,
216-
B3B5430F1F062A9700408912 /* DefaultTableViewController.swift */,
217-
B3B543101F062A9700408912 /* DefaultWebViewController.swift */,
218-
B3B543111F062A9700408912 /* DianpingRefreshHeader.swift */,
219-
B3B543121F062A9700408912 /* DianpingTableviewController.swift */,
220-
B3B543131F062A9700408912 /* ElasticHeaderTableViewController.swift */,
298+
B38F55001F976DF000993075 /* Util */,
299+
B38F54FE1F976D6000993075 /* Default */,
300+
B38F55011F976DFF00993075 /* Custom */,
221301
);
222302
name = ViewControllers;
223303
sourceTree = "<group>";

Demo/Demo/AppDelegate.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
1616

1717
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
1818
// Override point for customization after application launch.
19+
if #available(iOS 11.0, *) {
20+
UITableView.appearance().contentInsetAdjustmentBehavior = .never
21+
}
1922
return true
2023
}
2124

Demo/Demo/BaseTableViewController.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,20 @@ import UIKit
1010

1111
class BaseTableViewController: UITableViewController {
1212
var models = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
13+
1314
override func viewDidLoad() {
1415
super.viewDidLoad()
1516
self.tableView.tableFooterView = UIView(frame: CGRect.zero)
1617
}
18+
1719
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
1820
return models.count
1921
}
22+
2023
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
2124
return 44.0
2225
}
26+
2327
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
2428
var cell = tableView.dequeueReusableCell(withIdentifier: "cell")
2529
if cell == nil {
@@ -28,6 +32,7 @@ class BaseTableViewController: UITableViewController {
2832
cell?.textLabel?.text = "\(models[(indexPath as NSIndexPath).row])"
2933
return cell!
3034
}
35+
3136
deinit{
3237
print("Deinit of \(NSStringFromClass(type(of: self)))")
3338
}

Demo/Demo/ConfigBannerController.swift

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,21 @@ class ConfigBannerController: UIViewController {
1616
self.navigationItem.title = "Banners"
1717
self.automaticallyAdjustsScrollViewInsets = false
1818
setUpViews()
19+
let left = DefaultRefreshLeft.left()
20+
left.setText("👉滑动关闭", mode: .scrollToAction)
21+
left.setText("松开关闭", mode: .releaseToAction)
22+
left.textLabel.textColor = UIColor.orange
23+
scrollView.configSideRefresh(with: left, at: .left) {
24+
self.navigationController?.popViewController(animated: true)
25+
};
1926

20-
_ = scrollView.setUpLeftRefresh { [weak self] in
21-
_ = self?.navigationController?.popViewController(animated: true)
22-
}.SetUp { (left) in
23-
left.setText("👉滑动关闭", mode: RefreshKitLeftRightText.scrollToAction)
24-
left.setText("松开关闭", mode: RefreshKitLeftRightText.releaseToAction)
25-
left.textLabel.textColor = UIColor.orange
26-
}
27-
_ = scrollView.setUpRightRefresh { [weak self] in
28-
_ = self?.navigationController?.popViewController(animated: true)
29-
}.SetUp { (right) in
30-
right.setText("👈滑动关闭", mode: RefreshKitLeftRightText.scrollToAction)
31-
right.setText("松开关闭", mode: RefreshKitLeftRightText.releaseToAction)
32-
right.textLabel.textColor = UIColor.orange
33-
}
27+
let right = DefaultRefreshRight.right()
28+
right.setText("👈滑动关闭", mode: .scrollToAction)
29+
right.setText("松开关闭", mode: .releaseToAction)
30+
right.textLabel.textColor = UIColor.orange
31+
scrollView.configSideRefresh(with: right, at: .right) {
32+
self.navigationController?.popViewController(animated: true)
33+
};
3434
}
3535

3636
func setUpViews(){
@@ -50,13 +50,12 @@ class ConfigBannerController: UIViewController {
5050

5151
scrollView.isPagingEnabled = true
5252
scrollView.contentSize = CGSize(width: screenWidth * 2, height: scrollheight)
53-
let desLabel = UILabel().SetUp { (label) in
54-
label.frame = CGRect(x: 0, y: 0, width: screenWidth, height: 40)
55-
label.font = UIFont.systemFont(ofSize: 14)
56-
label.center = CGPoint(x: scrollView.center.x, y: scrollView.center.y - scrollView.frame.width/2 - 20)
57-
label.text = "向左或向右滑动Banner"
58-
label.textAlignment = .center
59-
}
60-
view.addSubview(desLabel)
53+
let label = UILabel()
54+
label.frame = CGRect(x: 0, y: 0, width: screenWidth, height: 40)
55+
label.font = UIFont.systemFont(ofSize: 14)
56+
label.center = CGPoint(x: scrollView.center.x, y: scrollView.center.y - scrollView.frame.width/2 - 20)
57+
label.text = "向左或向右滑动Banner"
58+
label.textAlignment = .center
59+
view.addSubview(label)
6160
}
6261
}

Demo/Demo/ConfigHeaderFooterController.swift

Lines changed: 27 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -16,36 +16,39 @@ class ConfigDefaultHeaderFooterController: UITableViewController {
1616
self.tableView.tableFooterView = UIView(frame: CGRect.zero)
1717

1818
//Header
19-
_ = self.tableView.setUpHeaderRefresh { [weak self] in
19+
let header = DefaultRefreshHeader.header()
20+
header.setText("Pull to refresh", mode: .pullToRefresh)
21+
header.setText("Release to refresh", mode: .releaseToRefresh)
22+
header.setText("Success", mode: .refreshSuccess)
23+
header.setText("Refreshing...", mode: .refreshing)
24+
header.setText("Failed", mode: .refreshFailure)
25+
header.tintColor = UIColor.orange
26+
header.imageRenderingWithTintColor = true
27+
header.durationWhenHide = 0.4
28+
self.tableView.configRefreshHeader(with: header) { [weak self] in
2029
delay(1.5, closure: {
2130
self?.models = (self?.models.map({_ in random100()}))!
2231
self?.tableView.reloadData()
23-
self?.tableView.endHeaderRefreshing(.success,delay: 0.3)
32+
self?.tableView.switchRefreshHeader(to: .normal(.success, 0.3))
2433
})
25-
}.SetUp { (header) in
26-
header.setText("Pull to refresh", mode: .pullToRefresh)
27-
header.setText("Release to refresh", mode: .releaseToRefresh)
28-
header.setText("Success", mode: .refreshSuccess)
29-
header.setText("Refreshing...", mode: .refreshing)
30-
header.setText("Failed", mode: .refreshFailure)
31-
header.textLabel.textColor = UIColor.orange
32-
header.durationWhenHide = 0.4
33-
}
34-
//Footer
35-
36-
_ = self.tableView.setUpFooterRefresh { [weak self] in
34+
};
35+
let footer = DefaultRefreshFooter.footer()
36+
footer.setText("Pull up to refresh", mode: .pullToRefresh)
37+
footer.setText("No data any more", mode: .noMoreData)
38+
footer.setText("Refreshing...", mode: .refreshing)
39+
footer.setText("Tap to load more", mode: .tapToRefresh)
40+
footer.textLabel.textColor = UIColor.orange
41+
footer.refreshMode = .tap
42+
self.tableView.configRefreshFooter(with: footer) {
3743
delay(1.5, closure: {
38-
self?.models.append(random100())
39-
self?.tableView.reloadData()
40-
self?.tableView.endFooterRefreshing()
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+
}
4151
})
42-
}.SetUp { (footer) in
43-
footer.setText("Pull up to refresh", mode: RefreshKitFooterText.pullToRefresh)
44-
footer.setText("No data any more", mode: RefreshKitFooterText.noMoreData)
45-
footer.setText("Refreshing...", mode: RefreshKitFooterText.refreshing)
46-
footer.setText("Tap to load more", mode: RefreshKitFooterText.tapToRefresh)
47-
footer.textLabel.textColor = UIColor.orange
48-
footer.refreshMode = .tap
4952
}
5053
}
5154
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

Demo/Demo/CurveMaskTableViewController.swift

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,12 @@ class CurveMaskTableViewController:BaseTableViewController{
1414
super.viewDidLoad()
1515
//Setup
1616
let curveHeader = CurveRefreshHeader(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: 0))
17-
_ = self.tableView.setUpHeaderRefresh(curveHeader) { [weak self] in
17+
self.tableView.configRefreshHeader(with: curveHeader) { [weak self] in
1818
delay(1.5, closure: {
1919
self?.models = (self?.models.map({_ in random100()}))!
2020
self?.tableView.reloadData()
21-
self?.tableView.endHeaderRefreshing(delay: 0.5)
21+
self?.tableView.switchRefreshHeader(to: .normal(.none, 0.5))
2222
})
23-
}
24-
// self.tableView.beginHeaderRefreshing()
23+
};
2524
}
2625
}

Demo/Demo/DefaultBannerController.swift

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,13 @@ class DefaultBannerController: UIViewController {
1717
self.navigationItem.title = "Banners"
1818
self.automaticallyAdjustsScrollViewInsets = false
1919
setUpViews()
20-
_ = scrollView.setUpLeftRefresh { [weak self] in
21-
_ = self?.navigationController?.popViewController(animated: true)
22-
}
23-
_ = scrollView.setUpRightRefresh { [weak self] in
20+
scrollView.configSideRefresh(with: DefaultRefreshLeft.left(), at: .left) {
21+
self.navigationController?.popViewController(animated: true)
22+
};
23+
scrollView.configSideRefresh(with: DefaultRefreshRight.right(), at: .right) {
2424
let nvc = DefaultBannerController()
25-
self?.navigationController?.pushViewController(nvc, animated: true)
26-
}
25+
self.navigationController?.pushViewController(nvc, animated: true)
26+
};
2727
}
2828

2929
func setUpViews(){
@@ -43,13 +43,12 @@ class DefaultBannerController: UIViewController {
4343

4444
scrollView.isPagingEnabled = true
4545
scrollView.contentSize = CGSize(width: screenWidth * 2, height: scrollheight)
46-
let desLabel = UILabel().SetUp { (label) in
47-
label.frame = CGRect(x: 0, y: 0, width: screenWidth, height: 40)
48-
label.font = UIFont.systemFont(ofSize: 14)
49-
label.center = CGPoint(x: scrollView.center.x, y: scrollView.center.y - scrollView.frame.width/2 - 20)
50-
label.text = "Scroll left or right"
51-
label.textAlignment = .center
52-
}
53-
view.addSubview(desLabel)
46+
let label = UILabel()
47+
label.frame = CGRect(x: 0, y: 0, width: screenWidth, height: 40)
48+
label.font = UIFont.systemFont(ofSize: 14)
49+
label.center = CGPoint(x: scrollView.center.x, y: scrollView.center.y - scrollView.frame.width/2 - 20)
50+
label.text = "Scroll left or right"
51+
label.textAlignment = .center
52+
view.addSubview(label)
5453
}
5554
}

Demo/Demo/DefaultCollectionViewController.swift

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,21 @@ import UIKit
1111
import PullToRefreshKit
1212

1313
class DefaultCollectionViewController:UIViewController,UICollectionViewDataSource{
14-
var collectionView:UICollectionView?
14+
var collectionView:UICollectionView!
1515
override func viewDidLoad() {
1616
self.view.backgroundColor = UIColor.white
1717
self.setUpCollectionView()
18-
_ = self.collectionView?.setUpHeaderRefresh({ [weak self] in
18+
self.collectionView.configRefreshHeader(with: DefaultRefreshHeader.header()) {
1919
delay(1.0, closure: {
20-
self?.collectionView?.endHeaderRefreshing(.success,delay: 0.3)
20+
self.collectionView.switchRefreshHeader(to: .normal(.success, 0.5));
2121
});
22-
})
23-
_ = self.collectionView?.setUpFooterRefresh({ [weak self] in
22+
}
23+
self.collectionView.configRefreshFooter(with: DefaultRefreshFooter.footer()) {
2424
delay(1.0, closure: {
25-
self?.collectionView?.endFooterRefreshing()
25+
self.collectionView.switchRefreshFooter(to: .normal)
2626
});
27-
})
27+
};
28+
2829
}
2930
func setUpCollectionView(){
3031
let flowLayout = UICollectionViewFlowLayout()

0 commit comments

Comments
 (0)