यह एक कस्टम, एनिमेटेड MKAnnotationView बनाने के लिए संभव है?

वोट
3

मैं MapKit (जहां-से उपयोगकर्ता की स्थिति को किसी pulsating नीले बिंदु से दिखाया जाता है) में उपयोगकर्ता स्थान एनीमेशन अनुकरण करने के लिए कोशिश कर रहा हूँ। मैं MKAnnotationView के एक कस्टम उपवर्ग बना लिया है और drawRect विधि में मैं रंगों का एक सेट के माध्यम से चक्र करने का प्रयास कर रहा हूँ। यहाँ मैं क्या कर रहा का एक सरल कार्यान्वयन है:

- (void)drawRect:(CGRect)rect {
float magSquared = event.magnitude * event.magnitude;
CGContextRef context = UIGraphicsGetCurrentContext();
if (idx == -1) {
    r[0] = 1.0; r[1] = 0.5; r[2] = 0;
    b[0] = 0; b[1] = 1.0; b[2] = 0.5;
    g[0] = 0.5; g[1] = 0; g[2] = 1.0;
    idx = 0;
}
// CGContextSetRGBFillColor(context, 1.0, 1.0 - magSquared * 0.015, 0.211, .6);
CGContextSetRGBFillColor(context, r[idx], g[idx], b[idx], 0.75);
CGContextFillEllipseInRect(context, rect);
idx++;
if (idx > 3) idx = 0;
}

दुर्भाग्य से यह सिर्फ 3 अलग अलग रंग के होने की एनोटेशन का कारण बनता है और उन के माध्यम से चक्र नहीं करता है। वहाँ लगातार तो पुनः बनाने का MKAnnotations मजबूर करने के लिए एक तरह से यह एनिमेटेड प्रतीत होता है कि है?

21/04/2010 को 14:47
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
4

आप कॉल करने के लिए स्वतंत्र हैं setNeedsDisplayअपनी एनोटेशन दृश्य पर जब भी आप यह पुनः बनाने का चाहते हैं। यह करने के लिए सबसे आसान तरीका है एनोटेशन दृश्य अपने आप में एक टाइमर है कि एक दूसरे या तो के हर 1/60 वें निकाल स्थापित करने के लिए के लिए किया जाएगा।

एक और अधिक परिष्कृत दृष्टिकोण एक कस्टम में अपने ड्राइंग कोड डाल करने के लिए किया जाएगा CALayerऔर इसे करने के लिए एक दोहराई जाने वाली कोर एनिमेशन एनीमेशन लागू होते हैं। देखें "CALayer उपवर्ग के एक कस्टम गुण एनिमेट करना" के लिए मेरा उत्तर एक दृष्टिकोण के लिए।

21/04/2010 को 15:22
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more