mirror of
https://github.com/Ranchero-Software/NetNewsWire.git
synced 2025-01-27 09:21:21 +01:00
Make unread and star animations cancel on cell reuse. Issue #2054
This commit is contained in:
parent
b3c0fac5d3
commit
d453a94330
@ -23,6 +23,9 @@ class MasterTimelineTableViewCell: VibrantTableViewCell {
|
||||
return NonIntrinsicImageView(image: AppAssets.timelineStarImage)
|
||||
}()
|
||||
|
||||
private var unreadIndicatorPropertyAnimator: UIViewPropertyAnimator?
|
||||
private var starViewPropertyAnimator: UIViewPropertyAnimator?
|
||||
|
||||
var cellData: MasterTimelineCellData! {
|
||||
didSet {
|
||||
updateSubviews()
|
||||
@ -35,7 +38,12 @@ class MasterTimelineTableViewCell: VibrantTableViewCell {
|
||||
}
|
||||
|
||||
override func prepareForReuse() {
|
||||
unreadIndicatorPropertyAnimator?.stopAnimation(true)
|
||||
unreadIndicatorPropertyAnimator = nil
|
||||
unreadIndicatorView.isHidden = true
|
||||
|
||||
starViewPropertyAnimator?.stopAnimation(true)
|
||||
starViewPropertyAnimator = nil
|
||||
starView.isHidden = true
|
||||
}
|
||||
|
||||
@ -184,10 +192,15 @@ private extension MasterTimelineTableViewCell {
|
||||
|
||||
func updateUnreadIndicator() {
|
||||
if !unreadIndicatorView.isHidden && cellData.read && !cellData.starred {
|
||||
UIView.animate(withDuration: 0.66, animations: { self.unreadIndicatorView.alpha = 0 }) { _ in
|
||||
self.unreadIndicatorView.isHidden = true
|
||||
self.unreadIndicatorView.alpha = 1
|
||||
unreadIndicatorPropertyAnimator = UIViewPropertyAnimator(duration: 0.66, curve: .easeInOut) { [weak self] in
|
||||
self?.unreadIndicatorView.alpha = 0
|
||||
}
|
||||
unreadIndicatorPropertyAnimator?.addCompletion { [weak self] _ in
|
||||
self?.unreadIndicatorView.isHidden = true
|
||||
self?.unreadIndicatorView.alpha = 1
|
||||
self?.unreadIndicatorPropertyAnimator = nil
|
||||
}
|
||||
unreadIndicatorPropertyAnimator?.startAnimation()
|
||||
} else {
|
||||
showOrHideView(unreadIndicatorView, cellData.read || cellData.starred)
|
||||
}
|
||||
@ -195,10 +208,15 @@ private extension MasterTimelineTableViewCell {
|
||||
|
||||
func updateStarView() {
|
||||
if !starView.isHidden && cellData.read && !cellData.starred {
|
||||
UIView.animate(withDuration: 0.66, animations: { self.starView.alpha = 0 }) { _ in
|
||||
self.starView.isHidden = true
|
||||
self.starView.alpha = 1
|
||||
starViewPropertyAnimator = UIViewPropertyAnimator(duration: 0.66, curve: .easeInOut) { [weak self] in
|
||||
self?.starView.alpha = 0
|
||||
}
|
||||
starViewPropertyAnimator?.addCompletion { [weak self] _ in
|
||||
self?.starView.isHidden = true
|
||||
self?.starView.alpha = 1
|
||||
self?.starViewPropertyAnimator = nil
|
||||
}
|
||||
starViewPropertyAnimator?.startAnimation()
|
||||
} else {
|
||||
showOrHideView(starView, !cellData.starred)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user