У меня есть UIRefreshControl
внутри табличного представления, и моя проблема в том, что когда я опускаю В табличном представлении есть определенный момент, когда изменение размера элемента управления обновлением не анимируется, а резко перескакивает с одного размера на другой.
Я воссоздал поведение на простом примере, это весь код, который у меня есть в моем View Controller:
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
в качестве подпредставления, поэтому похоже, что вы выполняете избыточную работу, а также пытаетесь жестко закодировать порядок подпредставлений вместо того, чтобы полагаться на встроенное поведение. - person Legonaftik   schedule 01.12.2020