首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIRefreshControl:表视图异常跳跃

UIRefreshControl:表视图异常跳跃
EN

Stack Overflow用户
提问于 2020-12-01 06:30:27
回答 1查看 466关注 0票数 2

我在表视图中有一个UIRefreshControl,我的问题是,当我下拉表视图时,刷新控件的大小更改没有动画效果,但它突然跳转到一个大小到另一个大小。

我在一个简单的例子中重新创建了行为,这是我在View Controller中拥有的所有代码:

代码语言:javascript
复制
class ViewController: UIViewController {
    
    let refreshControl = UIRefreshControl()
    @IBOutlet weak var tableView: UITableView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        tableView.delegate = self
        tableView.dataSource = self
        
        refreshControl.backgroundColor = .blue
        tableView.refreshControl = refreshControl
        tableView.insertSubview(refreshControl, at: 0)
    }
}

extension ViewController: UITableViewDelegate, UITableViewDataSource {
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 20
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "testCell", for: indexPath)
        cell.textLabel?.text = "\(indexPath.row)"
        return cell
    }
    
    func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
        refreshControl.endRefreshing()
    }
}

在下面的视频中,您可以看到,除了开始跳跃的某个点之外,大小更改的动画效果很好:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-01 13:20:14

你可以在swift中做到这一点,比如:

代码语言:javascript
复制
var refreshControl = UIRefreshControl()

override func viewDidLoad() {
  super.viewDidLoad()

  tableView.delegate = self
  tableView.dataSource = self

  refreshControl.attributedTitle = NSAttributedString(string: "Pull to refresh")
  refreshControl.addTarget(self, action: #selector(self.refresh(_:)), for: .valueChanged)
  tableView.addSubview(refreshControl) // not required when using UITableViewController
}

@objc func refresh(_ sender: AnyObject) {
   // Code to refresh table view  
   refreshControl.endRefreshing() // End Refreshing
}

您不能在scrollViewDidEndDecelerating方法中使用endRefreshing()并像上面那样更新您的viewDidLoad()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65082105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档