Ich habe eine einfache UIBezierPath
Animation mit Swift gemacht. Dieser Pfad besteht darin, ein abgerundetes Rechteck mit einem farbigen Rahmen zu erstellen. Die Animation muss die Zeichnung der farbigen Umrandung sein. Dazu habe ich eine CAShapeLayer
mit einem UIBezierPath(roundedRect:, cornerRadius:)
erstelltSwift: UIBezierPath Stroke Animation von Center
let layer = CAShapeLayer()
var viewPrueba = UIView()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
viewPrueba = UIView(frame: CGRectMake(self.view.frame.width/2-100, self.view.frame.height/2 - 100, 200, 200))
self.view.addSubview(viewPrueba)
let path = UIBezierPath(roundedRect: CGRectMake(0, 0, 200, 200), cornerRadius: 40.0)
layer.path = path.CGPath
layer.fillColor = UIColor.clearColor().CGColor
layer.strokeColor = UIColor.blueColor().CGColor
layer.strokeStart = 0.0
layer.strokeEnd = 0.0
layer.lineWidth = 4.0
layer.lineJoin = kCALineJoinRound
viewPrueba.layer.addSublayer(layer)
let tapGR = UITapGestureRecognizer(target: self, action: #selector(ViewController.anim))
self.view.addGestureRecognizer(tapGR)
}
func anim() {
let anim1 = CABasicAnimation(keyPath: "strokeEnd")
anim1.fromValue = 0.0
anim1.toValue = 1.0
anim1.duration = 4.0
anim1.repeatCount = 0
anim1.autoreverses = false
anim1.removedOnCompletion = false
anim1.additive = true
anim1.fillMode = kCAFillModeForwards
self.layer.addAnimation(anim1, forKey: "strokeEnd")
}`
es gut funktioniert. Das einzige Problem ist, dass die Animation von der oberen linken Ecke des Quadrats und nicht von der oberen Mitte beginnt. Wie kann ich das machen?
Das einzige, was ich gefunden habe, um dies zu erreichen, ist, indem ich es mit einem Kreis und nicht einem Rechteck mache, was nicht das ist, was wir wollen.
Dank
Funktioniert wie Charme! Vielen Dank! :) – rulilg