Вот код с Swift3.0Swift - использовать Tableview, чтобы сделать список обновлений
private let MAX_HEIGHT: CGFloat = 100.0
override func viewDidLoad() {
super.viewDidLoad()
self.spinner = UIActivityIndicatorView(frame: CGRect(x: 0, y: -MAX_HEIGHT, width: self.view.bounds.width, height: MAX_HEIGHT))
self.spinner.activityIndicatorViewStyle = .whiteLarge
self.spinner.color = .blue
self.view.insertSubview(spinner, at: 0)
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return 20
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "basicCell", for: indexPath)
cell.textLabel?.text = "The \(indexPath.row) Row"
return cell
}
И вот важный код: Когда я перетащить список, он будет делать это
override func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
if -scrollView.contentOffset.y >= MAX_HEIGHT + scrollView.contentInset.top {
UIView.animate(withDuration: 0.5, animations: {
scrollView.contentInset.top += MAX_HEIGHT
})
self.update()
}
}
func update() {
self.spinner.startAnimating()
// I want to make a sleep for 2 seconds, But sleep() is not suit
UIView.animate(withDuration: 2.0, animations: {
self.view.alpha = 0.99
}, completion: { (_) -> Void in
self.view.alpha = 1.0
self.spinner.stopAnimating()
UIView.animate(withDuration: 0.5, animations: {
self.tableView.contentInset.top -= MAX_HEIGHT
})
})
}
мультипликация я хочу, когда я закончу сопротивление, список будет иметь обновления анимации, как этот
Значение scrollview.contentInset.top будет установлено как 100.0, когда я закончу перетаскивание. Если я потянул немного дольше (125.0 ..), в списке будет анимация, как медленно перемещающаяся из положения, которое я перетащил до 100.0
Но результат заключается в том, что когда я закончил перетаскивание, , список немного сдвинется дольше, а затем сдвигается до 100,0, он не скользит до 100.0 напрямую. Похоже, что список быстро встряхнется.
Вы знаете, что эта функциональность уже обрабатывается при использовании [UIRefreshControl] (https://developer.apple.com/reference/uikit/uirefreshcontrol)? вы можете проверить [этот вопрос] (http://stackoverflow.com/questions/24475792/how-to-use-pull-to-refresh-in-swift-2), чтобы узнать, как его использовать. –
с использованием UIRefreshControl представляется многообещающим решением, но если я хочу добавить какую-то пользовательскую анимацию, UIRefreshControl не может много помочь. Я должен написать настраиваемый элемент управления таким образом: – pluto
Итак, теперь идея заключается в следующем: вы должны попытаться выяснить, как создать пользовательский UIRefreshControl (пользовательская анимация). –