arbeiten habe ich einen Fortschritt Methode here:CABasicAnimation auf CAShapeLayer nicht für Pfadänderung
func progress(incremented : CGFloat){
if incremented <= self.bounds.width{
self.progressLayer.removeFromSuperlayer()
let originBezierPathProg = UIBezierPath(roundedRect: CGRect(x:0, y:0, width:0, height:self.bounds.height) , cornerRadius: self.viewCornerRadius)
originBezierPathProg.close()
let newBezierPathProg = UIBezierPath(roundedRect: CGRect(x:0, y:0, width:incremented, height:self.bounds.height) , cornerRadius: self.viewCornerRadius)
bezierPathProg.close()
self.progressLayer.path = originBezierPathProg.cgPath
self.borderLayer.addSublayer(self.progressLayer)
let animation = CABasicAnimation(keyPath: "path")
animation.fromValue = originBezierPathProg.cgPath
animation.toValue = newBezierPathProg.cgPath
animation.duration = 1
self.progressLayer.add(animation, forKey: animation.keyPath)
self.progressLayer.path = newBezierPathProg.cgPath
}
}
Ich versuche, Fortschrittsbalken Fortschritt in einer animierten Weise zu machen. Aber wenn ich progress(100)
rufe, rendern einfach die Leiste ohne Animation.
Wie kann ich es beheben?
Aktualisierung: Erstellt MCVE nach Robs Vorschlag: https://github.com/utkarsh2012/ProgressBarTest. Ich erwarte, dass die Fortschrittsbalken von width = 0 bis width = x (etwa 60)
sehen ähnlich aus wie dieses Problem CABasicAnimation with CALayer path doesn't animate
Während dies [könnte etwas gestrafft werden] (https://gist.github.com/robertmryan/eb8a9a422ad3820e3eb20fe143be3893), funktioniert es für mich, wie es ist. Das Problem ist also entweder, wie Sie es aufrufen (zu früh, zu häufig, aus dem Hintergrundthread), oder Ihre 'Grenzen' oder 'inkrementierten' Werte sind so, dass die 'if'-Anweisung fehlschlägt.Wir brauchen ein ausführbares Beispiel für das Problem. – Rob
Lassen Sie mich mit einem einfachen Projekt mit diesem Problem kommen. Habe jetzt schon seit einigen Stunden damit zu kämpfen, ich denke, das wirkliche Problem ist, dass es von einem UIViews var ididSet aufgerufen wird (und wahrscheinlich zu früh?). Ich mache auch Layout wenn nötig danach. Blick auf SetupView: https://github.com/TwoPence/TwoPence/blob/milestone/TwoPence/MilestoneFutureView.swift – zengr
Es ist schwer zu sagen. Da ist etwas nicht miteinander verbundenes Zeug, aber zur gleichen Zeit nicht genug, um das Problem zu reproduzieren, denke ich. Wenn Sie möchten, dass wir Ihnen helfen, benötigen wir [MCVE] (http://stackoverflow.com/help/mcve), d. H. Zeigen Sie uns, wie Sie ein leeres Projekt erstellen, fügen Sie die Mindestmenge an Code ein, die Ihr Problem manifestiert. Oder, wenn Sie das Problem selbst diagnostizieren möchten, fügen Sie Debugging-Code hinzu, der (a) überprüft, ob es im Haupt-Thread passiert; (b) dass "Grenzen" das ist, was Sie denken, wenn "Fortschritt (inkrementiert:)" aufgerufen wird; (c) welcher "inkrementierte" Wert war. – Rob