我正在試圖製作一個動畫,其中屏幕上的顏色是紅色的脈衝,當屏幕被點擊時,脈衝的速度會增加。現在我有兩個問題。其一,是動畫不會發生,其次是動畫必須加速而不重新啓動動畫。我希望動畫能夠從屏幕點擊時的任何點進行加速。我無法讓這個CA動畫工作
class ViewController: UIViewController {
var tapCount: Int = 0
var pulseSpeed: Double = 3
let pulseAnimLayer = CALayer()
let pulseAnim = CABasicAnimation(keyPath: "Opacity")
override func viewDidLoad() {
super.viewDidLoad()
counter.center = CGPoint(x: 185, y: 118)
pulseAnim.fromValue = 0.5
pulseAnim.toValue = 1.0
pulseAnim.duration = 3.0
pulseAnim.autoreverses = true
pulseAnim.repeatCount = .greatestFiniteMagnitude
pulseAnimLayer.add(pulseAnim, forKey: "Opacity")
}
func pulseAnimation(pulseSpeed: Double) {
UIView.animate(withDuration: pulseSpeed, delay: 0,
options: [UIViewAnimationOptions.repeat, UIViewAnimationOptions.autoreverse],
animations: {
self.red.alpha = 0.5
self.red.alpha = 1.0
}
)
}
@IBOutlet weak var red: UIImageView!
@IBOutlet weak var counter: UILabel!
@IBAction func screenTapButton(_ sender: UIButton) {
tapCount += 1
counter.text = "\(tapCount)"
pulseSpeed = Double(3)/Double(tapCount)
pulseAnim.duration = pulseSpeed
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
我知道我需要這樣做。所有額外的東西與UIView動畫和pulseAnimation應該已被刪除。我沒有使用我最新版本中的那些。我只是不知道如何將CALayer放入視圖以及如何在該圖層上放置動畫。 –
在關於如何將子圖層添加到視圖圖層的答案結尾添加了註釋。 –