У меня есть страница списка и страница сведений. На моей странице списка есть UITableView.В моей табличной ячейке:
var buttonStyle: ButtonStyle = .Button {
didSet {
let rotationAnimation = CABasicAnimation(keyPath: "transform.rotation.z")
rotationAnimation.toValue = NSNumber(value: Double.pi * 2.0)
rotationAnimation.duration = 2
rotationAnimation.isCumulative = true
rotationAnimation.repeatCount = Float.infinity
rotationAnimation.isRemovedOnCompletion = false
if oldValue != buttonStyle {
switch buttonStyle {
case .Button:
self.loadingView.isHidden = true
self.progressView.isHidden = true
self.opertaionBtn.isHidden = false
self.bringSubview(toFront: self.opertaionBtn)
case .Loading:
//self.loadingView.layer.add(rotationAnimation, forKey: "rotationAnimation")
self.loadingView.isHidden = false
self.progressView.isHidden = true
self.opertaionBtn.isHidden = true
self.bringSubview(toFront: self.loadingView)
}
}
}
}
Я использовал, чтобы добавить аниме на didSet.Когда страница возвращается со страницы сведений, я установил для buttonStyle значение Загрузка и обновил ячейку. Но анимация не движется.Поэтому я пишу функцию для размещения анимации.
func addAnimation() {
var anime = self.loadingView.layer.animation(forKey: "rotationAnimation") as? CABasicAnimation
if anime == nil {
anime = CABasicAnimation(keyPath: "transform.rotation.z")
anime.toValue = NSNumber(value: Double.pi * 2.0)
anime.duration = 2
anime.isCumulative = true
anime.repeatCount = Float.infinity
anime.isRemovedOnCompletion = false
self.loadingView.layer.add(anime, forKey: "rotationAnimation")
}
}
И когда я возвращаюсь на страницу списка, я сначала устанавливаю buttonStyle и addAnimation()
.Это работает хорошо.Кто-нибудь знает почему?Спасибо!