我有 4 個邊,每個角一個,帶有影片。影片所做的唯一一件事就是改變該邊框的 alpha。alpha 從 0.05 變為 1。我正在這樣做影片:
private func startAnimation(duration: CFTimeInterval) {
let cornerAnimate = CABasicAnimation(keyPath: #keyPath(CALayer.opacity))
cornerAnimate.fromValue = 1
cornerAnimate.toValue = 0.05
cornerAnimate.duration = duration
cornerAnimate.repeatCount = .infinity
cornerAnimate.autoreverses = true
cornerAnimate.isRemovedOnCompletion = false
cornerAnimate.timingFunction = CAMediaTimingFunction(name: .easeInEaseOut)
corners.forEach { corner in
corner.add(cornerAnimate, forKey: "opacity")
}
}
我有它,.infinity因為那是我想做的。我希望影片無限顯示,當我告訴它時,隨時停止它。
但我不希望它突然停止,我希望它在alpha 為 1.0時停止。我的意思是,當我呼叫 function 時stopAnimation(),它會跟隨影片一點點,直到它“完成該回圈”并且當 alpha 為 1.0 時它會停止它。
這是我試圖做的,但影片仍然很突然:
func stopAnimation() {
let endAnimation = CABasicAnimation(keyPath: #keyPath(CALayer.opacity))
var actualOpacity: Double = 0.05
corners.forEach { corner in
actualOpacity = corner.presentation()?.value(forKeyPath: "opacity") as! Double
}
endAnimation.fromValue = actualOpacity
endAnimation.toValue = 1.0
endAnimation.duration = 1.0
corners.forEach { corner in
corner.add(endAnimation, forKey: "end")
corner.removeAnimation(forKey: "opacity")
}
}

uj5u.com熱心網友回復:
看起來您正在模擬器中構建應用程式(因為我可以看到滑鼠移動),這似乎是一個僅影響模擬器的錯誤。我能夠在模擬器中重現它,但不能在實際設備上重現。
在設備上運行它,您應該不會看到該故障。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/409748.html
標籤:
上一篇:使用回圈調度運行多個執行緒
下一篇:iOS15.0中已棄用“影片”
