Swift3.0 Day06 使用UIRefreshControl实现下拉刷新

其实之前做OC的时候一直以为上拉刷新和下拉加载都是用运行时的原理去做的,可是今天看到案例的时候,发现有一个UIRefreshControl是专门做这个的,下面我们看看这个简单的下拉刷新具体是怎么做的吧

各项元素初始化#

    let cellIdentifer = "NewCellIdentifier"
    
    let favoriteEmoji = ["🤗🤗🤗🤗🤗", "", ""]
    let newFavoriteEmoji = ["", "", "", "🤗🤗🤗🤗🤗", "", "" ]
    var emojiData = [String]()
    var tableViewController = UITableViewController(style: .plain)
    
    var refreshControl = UIRefreshControl()
    var navBar: UINavigationBar = UINavigationBar(frame: CGRect(x: 0, y: 0, width: 375, height: 64))

ViewDidLoad方法对视图进行调整#

    override func viewDidLoad() {
        super.viewDidLoad()
        emojiData = favoriteEmoji
        let emojiTableView = tableViewController.tableView
        
        emojiTableView?.backgroundColor = UIColor(red:0.092, green:0.096, blue:0.116, alpha:1)
        emojiTableView?.dataSource = self
        emojiTableView?.register(UITableViewCell.self, forCellReuseIdentifier: cellIdentifer)
        
        tableViewController.refreshControl = self.refreshControl
        self.refreshControl.addTarget(self, action: #selector(didRoadEmoji), for: .valueChanged)
        
        self.refreshControl.backgroundColor = UIColor(red:0.113, green:0.113, blue:0.145, alpha:1)
        let attributes = [NSForegroundColorAttributeName: UIColor.white]
        self.refreshControl.attributedTitle = NSAttributedString(string: "Last updated on \(NSDate())", attributes: attributes)
        self.refreshControl.tintColor = UIColor.white
        
        self.title = "emoji"
        self.navBar.barStyle = UIBarStyle.blackTranslucent
        
        emojiTableView?.rowHeight = UITableViewAutomaticDimension
        emojiTableView?.estimatedRowHeight = 60.0
        emojiTableView?.tableFooterView = UIView(frame:.zero)
        emojiTableView?.separatorStyle = UITableViewCellSeparatorStyle.none
        
        
        self.view.addSubview(emojiTableView!)
        self.view.addSubview(navBar)
    }
    func didRoadEmoji() {
        self.emojiData = newFavoriteEmoji
        self.tableViewController.tableView.reloadData()
        self.refreshControl.endRefreshing()
    }

TableView数据代理#

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return emojiData.count
    }
    
    private func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return 1
    }
    
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifer)! as UITableViewCell
        
        cell.textLabel!.text = self.emojiData[indexPath.row]
        cell.textLabel!.textAlignment = NSTextAlignment.center
        cell.textLabel!.font = UIFont.systemFont(ofSize: 50)
        cell.backgroundColor = UIColor.clear
        cell.selectionStyle = UITableViewCellSelectionStyle.none
        
        return cell
    }

基本的代码就是这样,有机会会对此做相应的改造,争取能封装成一个开源类库,本例代码请戳使用UIRefreshControl实现下拉刷新

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,259评论 4 61
  • 秋分过后,以为天气就此转凉。不料凉快了周末二日,转瞬即是桂花蒸。空气里弥散着不浓不淡的香气,即使气温高达32度,那...
    圓蝸牛阅读 598评论 0 2
  • 成熟的枇杷味道甜美,营养颇丰,最熟知的功效就是润肺,止咳,止渴。她有各种果糖,葡萄糖,钾,磷,铁,钙以及维生素AB...
    壹易阅读 360评论 0 0
  • 早起才能享受到的风景,分享给大家。 看到这一片绿 有没有想回归当个农民的冲动?‍‍ 梦想的生活 一块地 一间木屋 ...
    ahsuw阅读 182评论 0 0
  • 摘要 现在呢,很多人都忘了怎么祭祖了,更有些人呢把祭祖看成一件很可怕的事情,也常常有各大平台发一些禁忌,其实...
    祥子笔记阅读 1,030评论 0 0