Ich habe eine relativ einfache Implementierung einer Fortschrittsanzeige, die mit CALayer-Objekten eingerichtet wurde. Die Fortschrittsanzeige selbst ist eine Unteransicht von UIView.Swift: Gradient entlang eines Bezier-Pfades (mit CALayers)
Hier ist der Code, der den Fortschritt Ring aufstellt:
self.progressRingLayer = CAShapeLayer()
let innerRect = CGRectInset(bounds, CGFloat(self.lineWidth)/2, CGFloat(self.lineWidth)/2)
let innerPath = UIBezierPath(ovalInRect: innerRect)
self.progressRingLayer.path = innerPath.CGPath
self.progressRingLayer.fillColor = UIColor.clearColor().CGColor
self.progressRingLayer.strokeColor = kProgressColor.CGColor
self.progressRingLayer.anchorPoint = CGPointMake(0.5, 0.5)
self.progressRingLayer.transform = CATransform3DRotate(self.progressRingLayer.transform, (CGFloat(M_PI))*1, 0, 0, 1)
self.progressRingLayer.lineCap = kCALineCapRound
self.progressRingLayer.lineWidth = CGFloat(self.lineWidth)
self.layer.addSublayer(self.progressRingLayer)
Was ich versuche jetzt zu tun ist, einen Gradienten zu dem progressRingLayer hinzufügen, die (oder Biegungen mit) den Pfad folgt. Es ist mir gelungen, der Füllung einen linearen Gradienten hinzuzufügen, aber nicht nur den Pfad. Hier
ist ein Beispiel dafür, was Wirkung Ich mag:
Bisher alles, was ich gefunden habe erfordert eine Reihe von zusätzlichen Schritten mit Core Graphics und CGContext, die nicht ganz fit mit meiner Implementierung. Jede Hilfe wäre großartig, danke!
Würde die Verwendung Ihres Pfades als Maske für Ihre Farbverlaufsschicht als Antwort ausreichen, oder möchten Sie auch, dass sich Ihr Farbverlauf mit Ihrem Pfad biegt, anstatt als maskierter linearer Farbverlauf angezeigt zu werden? –
Ich bin auf der Suche nach der Gradientenkurve zum Pfad. Die Verwendung einer Maske ist eine der Möglichkeiten, mit denen ich den falschen Effekt erzielt habe. –
Können Sie ein Bild von dem zeichnen, was Sie wollen? – matt