मैं एंड्रॉइड सामग्री डिज़ाइन सर्कुलर अनिश्चित गतिविधि संकेतक के समान कस्टम गतिविधि सूचक बनाने की कोशिश कर रहा हूं। असल में मैं सर्कल को दो बार खींचना चाहता हूं और इसे मिटाना चाहता हूं, लेकिन मिटाना और ड्राइंग एक ही समय या गति पर नहीं होता है। यह मेरे पास अब तक है:दो स्ट्रोक एंड एनीमेशन कनेक्ट करें
let progressLayer = CAShapeLayer()
progressLayer.strokeColor = UIColor.red().cgColor
progressLayer.fillColor = nil
progressLayer.lineWidth = 2
let drawAnimation = CABasicAnimation(keyPath: "strokeEnd")
drawAnimation.duration = duration/2
drawAnimation.fromValue = 0
drawAnimation.toValue = 1
drawAnimation.isRemovedOnCompletion = false
drawAnimation.fillMode = kCAFillModeForwards
let eraseAnimation = CABasicAnimation(keyPath: "strokeStart")
eraseAnimation.duration = duration/2
eraseAnimation.beginTime = 0.2
eraseAnimation.fromValue = 0
eraseAnimation.toValue = 0.4
eraseAnimation.isRemovedOnCompletion = false
eraseAnimation.fillMode = kCAFillModeForwards
let endDrawAnimation = CABasicAnimation(keyPath: "strokeEnd")
endDrawAnimation.beginTime = duration/2
endDrawAnimation.duration = duration/2
endDrawAnimation.fromValue = 0
endDrawAnimation.toValue = 1
endDrawAnimation.isRemovedOnCompletion = false
endDrawAnimation.fillMode = kCAFillModeForwards
let endEraseAnimation = CABasicAnimation(keyPath: "strokeStart")
endEraseAnimation.beginTime = duration/2
endEraseAnimation.duration = duration/4
endEraseAnimation.fromValue = 0.4
endEraseAnimation.toValue = 1
endEraseAnimation.isRemovedOnCompletion = false
endEraseAnimation.fillMode = kCAFillModeForwards
let endEraseAnimation2 = CABasicAnimation(keyPath: "strokeStart")
endEraseAnimation2.beginTime = duration * 3/4
endEraseAnimation2.duration = duration/4
endEraseAnimation2.fromValue = 0
endEraseAnimation2.toValue = 1
endEraseAnimation2.isRemovedOnCompletion = false
endEraseAnimation2.fillMode = kCAFillModeForwards
let animations = CAAnimationGroup()
animations.duration = duration
animations.animations = [drawAnimation, eraseAnimation, endDrawAnimation, endEraseAnimation, endEraseAnimation2]
animations.isRemovedOnCompletion = false
animations.fillMode = kCAFillModeForwards
progressLayer.add(animations, forKey: "stroke")
कोड एक समस्या को छोड़कर, सबकुछ अपेक्षित करता है। जब पहली strokeEnd
एनीमेशन किया जाता है और दूसरा शुरू होता है तो फ़्लैश का प्रकार होता है जिसका अर्थ है कि उस बिंदु तक खींचा गया सर्कल का हिस्सा गायब हो जाता है और फिर ड्राइंग 0 से फिर से शुरू होता है। क्या किसी के पास कोई फिक्स है कि इसे कैसे ठीक किया जाए?
आपका कोड शो त्रुटियों जब मैं संकलित करने के लिए प्रयास करते हैं, अपने वास्तविक कोड डाल कृपया क्रम में मदद करने के लिए आप –
@ReinierMelian यह स्विफ्ट 3 कोड है, सुनिश्चित करें कि आप एक्सकोड 8 का उपयोग कर रहे हैं या इसे स्विफ्ट 2 में अनुवाद कर सकते हैं। @ बनाना, 'progressLayer' क्या है? – JAL
'प्रगति लेयर' एक 'कैशपलेयर' है, मैंने इसे ऊपर दिए गए प्रश्न में जोड़ा। – Banana