मैं मानक CGContextFillEllipseInRect()
कोड का उपयोग कर UIView
के -drawRect:
विधि में एक वृत्त खींच रहा हूं। हालांकि, मैं थोड़ा पल्स (बड़ा और छोटा बनाना) और एनीमेशन के साथ रंग भरने की तीव्रता को बदलना चाहता हूं। उदाहरण के लिए, यदि सर्कल लाल से भरा हुआ है, तो मैं सर्कल को पल्स करना चाहता हूं और लाल रंग को थोड़ा हल्का और गहराई से पल्सिंग एक्शन के साथ बनाना चाहता हूं। कोर एनीमेशन के साथ ज्यादा अनुभव नहीं है, मैं इसे कैसे करना है इसके बारे में थोड़ा सा खो गया हूं, इसलिए किसी भी मदद की सराहना की जाएगी।drawRect सर्कल और एनिमेट आकार/रंग
28
A
उत्तर
70
यदि आप drawRect:
में सर्कल नहीं खींचते हैं तो यह बहुत आसान है।
@implementation PulseView
+ (Class)layerClass {
return [CAShapeLayer class];
}
प्रणाली हुए अपने दृश्य पर layoutSubviews
भेजता है जब भी यह (सहित जब वह पहली बार दिखाई देता है) आकार बदलता है: इसके बजाय, एक CAShapeLayer
, इस तरह उपयोग करने के लिए आपके विचार की स्थापना की। हम layoutSubviews
ओवरराइड आकार स्थापित करने के लिए और चेतन यह:
- (void)setLayerProperties {
CAShapeLayer *layer = (CAShapeLayer *)self.layer;
layer.path = [UIBezierPath bezierPathWithOvalInRect:self.bounds].CGPath;
layer.fillColor = [UIColor colorWithHue:0 saturation:1 brightness:.8 alpha:1].CGColor;
}
हम की जरूरत है:
- (void)layoutSubviews {
[self setLayerProperties];
[self attachAnimations];
}
यहाँ कैसे हम परत के पथ (जो अपने आकार को निर्धारित करता है) और आकार के लिए रंग भरने सेट है
- (void)attachAnimations {
[self attachPathAnimation];
[self attachColorAnimation];
}
यहाँ कैसे हम परत के पथ चेतन है::
रंग भरने के लिए पथ के लिए और दूसरा - परत करने के लिए दो एनिमेशन देते हैं- (void)attachColorAnimation {
CABasicAnimation *animation = [self animationWithKeyPath:@"fillColor"];
animation.fromValue = (__bridge id)[UIColor colorWithHue:0 saturation:.9 brightness:.9 alpha:1].CGColor;
[self.layer addAnimation:animation forKey:animation.keyPath];
}
attach*Animation
तरीकों में से दोनों एक सहायक विधि है कि एक बुनियादी एनीमेशन बनाता है और यह सेट अप autoreverse और एक एक सेकंड की अवधि के साथ अनिश्चित काल को दोहराने के लिए उपयोग करें:
- (void)attachPathAnimation {
CABasicAnimation *animation = [self animationWithKeyPath:@"path"];
animation.toValue = (__bridge id)[UIBezierPath bezierPathWithOvalInRect:CGRectInset(self.bounds, 4, 4)].CGPath;
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
[self.layer addAnimation:animation forKey:animation.keyPath];
}
यहाँ कैसे हम परत के भरण रंग चेतन है :
- (CABasicAnimation *)animationWithKeyPath:(NSString *)keyPath {
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:keyPath];
animation.autoreverses = YES;
animation.repeatCount = HUGE_VALF;
animation.duration = 1;
return animation;
}
संबंधित मुद्दे
- 1. drawRect
- 2. drawRect
- 3. drawRect स्क्रीन
- 4. drawRect ड्राइंग 'पारदर्शी' पाठ?
- 5. बेंचमार्क UIView drawRect: विधि
- 6. Jquery एनिमेट छुपाएं और दिखाएं
- 7. UIView एनिमेट और समापन ब्लॉक
- 8. JQuery एनिमेट बाएं और स्केल
- 9. वेब सर्कल
- 10. सर्कल सेगमेंट के स्ट्रोक का एनीमेशन पूर्ण स्ट्रोक
- 11. किसी सर्कल को एनिमेट करने के लिए jQuery/HTML5 का उपयोग करना
- 12. सर्कल ओवरले
- 13. दो सर्कल
- 14. सबव्यू के शीर्ष पर drawRect
- 15. drawRect चित्रों के लिए एनिमेशन
- 16. jQuery एनिमेट,
- 17. drawRect और इंटरफ़ेस बिल्डर के बीच रंग अंतर?
- 18. एंड्रॉइड एनिमेट
- 19. केंद्रीय सर्कल के त्रिज्या से सभी ओवरलैपिंग सर्कल कैसे ढूंढें?
- 20. सर्कल सीमा प्राप्त करना
- 21. Jquery एनिमेट() और Google क्रोम मुद्दे
- 22. कस्टम सर्कल बटन
- 23. फिक्स्ड त्रिज्या सर्कल
- 24. सर्कल को जावास्क्रिप्ट
- 25. NSView subviews के साथ हस्तक्षेप drawRect?
- 26. आईओएस एनिमेट डैशेड आयत सीमा
- 27. drawRect में क्रैश - इसका क्या कारण है?
- 28. एक UIBezierPath को एनिमेट करें जो UIImage
- 29. कब है - [UIView drawRect:] विधि शामिल है?
- 30. मैं चेतन करना चाहते हैं, इस तथ्य फीका में, drawRect
बहुत बढ़िया स्पष्टीकरण। बहुत बहुत धन्यवाद :) – Skoota
यह वही है जो मैं ढूंढ रहा हूं, लेकिन इसे दिखाने के लिए मैं इसे UIView से कैसे कॉल करूं? मुझे लगता है कि यह कोड अपनी कक्षा में स्थापित है। – bmueller
'पल्स व्यू' 'UIView' का उप-वर्ग है। –