Tôi có một triển khai tương đối thẳng về phía trước của một khung nhìn tiến trình được thiết lập với các đối tượng CALayer. Chế độ xem tiến trình chính nó là một phần phụ của UIView.Swift: Gradient dọc theo một con đường bezier (sử dụng CALayers)
Đây là mã mà bộ lên chiếc nhẫn tiến bộ:
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)
Những gì tôi đang cố gắng để làm bây giờ là thêm một gradient đến progressRingLayer rằng sau (hoặc uốn cong với) con đường. Tôi đã thành công trong việc thêm một gradient tuyến tính để lấp đầy, nhưng không chỉ đường dẫn.
Dưới đây là một ví dụ về những gì tác động tôi muốn:
Cho đến nay tất cả mọi thứ tôi đã tìm thấy đòi hỏi một loạt các bước bổ sung với CoreGraphics và CGContext mà không hoàn toàn phù hợp với thực hiện của tôi. Bất kỳ trợ giúp sẽ là tuyệt vời, cảm ơn!
Sử dụng đường dẫn làm mặt nạ cho lớp gradient của bạn đủ để trả lời, hoặc bạn cũng muốn gradient của bạn uốn cong với đường dẫn thay vì được hiển thị dưới dạng một đường thẳng được tô đậm? –
Tôi đang tìm cách uốn cong gradient xuống đường dẫn. Sử dụng mặt nạ là một trong những cách tôi thực hiện hiệu ứng sai. –
Bạn có thể vẽ một bức tranh về những gì bạn muốn không? – matt