【发布时间】:2020-11-30 22:30:26
【问题描述】:
我在一个table view里面有个UIRefreshControl,我的问题是当我拉下table view的时候,有某个点刷新控件的大小变化不是动画的,而是突然跳到一个大小到另一个。
我在一个简单的示例中重新创建了该行为,这是我的视图控制器中的所有代码:
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()
}
}
【问题讨论】:
-
您能否尝试删除此行:
tableView.insertSubview(refreshControl, at: 0)?tableView.refreshControl = refreshControl应该已经将refreshControl添加为子视图,因此看起来您正在做多余的工作,并且还尝试对子视图的顺序进行硬编码,而不是依赖内置行为。 -
您好,感谢您的建议。不幸的是,删除该行后行为是相同的。
标签: ios swift xcode uikit uirefreshcontrol