Swift: Как создать эту анимацию в Swift/SwiftUI?
Я больше изучал анимацию и задавался вопросом, как можно создать подобную анимацию в UIKit/SwiftUI? и как будет называться анимация, если я буду в нее больше разбираться? Это не обязательно должен быть точный макет, например, одной строки uiview/uiimageview более чем достаточно. Мне просто нужно знать, как / какой подход выполнить такую анимацию.
1 ответ
Используя Swift/UIKit, этого можно добиться, подав иск CAKeyframeAnimation
. Ниже приведен пример кода для того же. Предполагается, что естьUIImageView
с именем imageView
и измените имя файла изображения на то, что вам нужно.
func createPanXAnimation() {
let scaleLayer = CALayer()
scaleLayer.frame = imageView.bounds.insetBy(dx: -200, dy: -200)
scaleLayer.contents = UIImage(named: <#ImageResourceName#>)!.cgImage!
imageView.layer.addSublayer(scaleLayer)
let centerX = imageView.bounds.width/2.0
let xPositionArray: [NSNumber] = [100, 200, 250]
var timesArray: [NSNumber] = [0, 0.3, 0.6]
timesArray.append(1.0)
// Total loop time
let time : Float = 3
let animation = CAKeyframeAnimation(keyPath: "position.x")
animation.beginTime = 0
animation.duration = CFTimeInterval(time)
animation.repeatCount = Float.greatestFiniteMagnitude;
animation.isRemovedOnCompletion = false
animation.fillMode = CAMediaTimingFillMode.forwards
animation.autoreverses = true
animation.values = xPositionArray
animation.keyTimes = timesArray
//animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear)
animation.calculationMode = CAAnimationCalculationMode.linear
scaleLayer.add(animation, forKey: "position.x")
}
Надеюсь, это даст вам некоторые идеи, если не решение для копирования / вставки.