本文将演示如何创建美观的弹性下拉刷新效果。
首先确保在项目中已经安装了所需的第三方库。
点击【Podfile】,查看安装配置文件。
1 platform :ios, '12.0' 2 use_frameworks! 3 4 target 'DemoApp' do 5 source 'https://github.com/CocoaPods/Specs.git' 6 pod 'DGElasticPullToRefresh' 7 end
根据配置文件中的相关配置,安装第三方库。
然后点击打开【DemoApp.xcworkspace】项目文件。
在项目导航区,打开视图控制器的代码文件【ViewController.swift】
现在开始编写代码,实现弹性下拉刷新效果的功能。
1 import UIKit 2 //在当前的类文件中引入已经安装的第三方类库 3 import DGElasticPullToRefresh 4 5 //使当前的视图控制器类,遵循表格的数据源协议UITableViewDataSource和代理协议UITableViewDelegate 6 class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { 7 8 //添加一个包含十二个月的数组属性,作为表格视图的数据源 9 var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"] 10 //添加一个属性,作为需要添加下拉刷新功能的表格视图 11 var tableView : UITableView! 12 13 override func viewDidLoad() { 14 super.viewDidLoad() 15 // Do any additional setup after loading the view, typically from a nib. 16 17 //创建一个矩形区域,作为表格视图的显示区域 18 let rect = CGRect(x: 0, y: 60, width: 320, height: 510) 19 //初始化一个指定显示区域的表格对象 20 tableView = UITableView(frame: rect) 21 22 //设置表格对象的数据源为当前的视图控制器对象 23 tableView.delegate = self 24 //设置表格对象的代理为当前的视图控制器对象 25 tableView.dataSource = self 26 //设置表格的背景颜色 27 tableView.backgroundColor = UIColor(red: 254.0/255, green: 249.0/255, blue: 252.0/255, alpha: 1.0) 28 29 //初始化一个第三方的下拉刷新组件 30 let loadingView = DGElasticPullToRefreshLoadingViewCircle() 31 //设置前景颜色为白色 32 loadingView.tintColor = UIColor.white 33 //给表格视图添加下拉刷新的功能 34 tableView.dg_addPullToRefreshWithActionHandler( 35 { [weak self] () -> Void in 36 //当对表格执行下拉刷新操作时,往数组中插入一个新元素。 37 //并将新元素放置在数组的首位。 38 self?.months.insert("Honey moon", at: 0) 39 //让表格对象刷新数据源 40 self?.tableView.reloadData() 41 //终止刷新控件的刷新动作 42 self?.tableView.dg_stopLoading() 43 }, loadingView: loadingView) 44 45 //设置下拉刷新的填充颜色为橙色 46 tableView.dg_setPullToRefreshFillColor(.orange) 47 //设置下拉刷新的背景颜色和表格的背景颜色保持一致 48 tableView.dg_setPullToRefreshBackgroundColor(tableView.backgroundColor!) 49 50 //设置根视图的背景颜色 51 self.view.backgroundColor = UIColor.orange 52 //将表格添加到根视图 53 self.view.addSubview(tableView) 54 } 55 56 //添加一个代理方法,用来设置表格的行数 57 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 58 { 59 //在此设置表格的行数为数组的长度 60 return months.count 61 } 62 63 //添加一个代理方法,用来初始化或复用表格中的单元格 64 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 65 { 66 //创建一个字符串常量,作为单元格的复用标识 67 let identifier = "reusedCell" 68 //根据复用标识,从表格中获得可以复用的单元格 69 var cell = tableView.dequeueReusableCell(withIdentifier: identifier) 70 71 //如果没有可以复用的单元格 72 if(cell == nil) 73 { 74 //则初始化一个默认样式的单元格,并设置单元格的复用标识 75 cell = UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: identifier) 76 } 77 78 //获得当前单元格的行数序号 79 let rowNum = (indexPath as NSIndexPath).row 80 //通过单元格的行数序号,从数组中获得相应的字符串,以设置单元格的标题内容, 81 cell?.textLabel?.text = months[rowNum] 82 //设置单元格的背景颜色 83 cell?.backgroundColor = UIColor(red: 254.0/255, green: 249.0/255, blue: 252.0/255, alpha: 1.0) 84 85 //返回设置好的单元格 86 return cell! 87 } 88 89 //添加一个方法,在当前的视图控制器被销毁时 90 deinit 91 { 92 //消除表格的下拉刷新控件 93 tableView.dg_removePullToRefresh() 94 } 95 96 override func didReceiveMemoryWarning() { 97 super.didReceiveMemoryWarning() 98 // Dispose of any resources that can be recreated. 99 } 100 }