2011-03-28 17 views
19

में मानों पता कर सकते हैं मैं इस तरह कुछ कोड को खोजने:मैं कैसे CABasicAnimation मुख्यपथ

CABasicAnimation *anim = [CABasicAnimation animation]; 
anim.keyPath = @"transform.scale"; 
anim.fromValue = [NSNumber numberWithFloat:1.0]; 
anim.toValue = [NSNumber numberWithFloat:0]; 
anim.removedOnCompletion = NO; 
anim.fillMode = kCAFillModeBoth; 
anim.delegate = self; 
[self.view.layer addAnimation:anim forKey:@"scaleOut"]; 

और

anim.keyPath = @"transform.rotation.x"; 

जहाँ तक मुझे पता है, मुख्यपथ एक श्रृंखलित विधि आह्वान है। कैलियर के लिए "transform.scale" aLayer.transform.scale है। "ट्रांसफॉर्म" कैलियर की एक संपत्ति है, "स्केल" ट्रांसफॉर्म की 'संपत्ति' है। लेकिन कैलियर में संपत्ति परिवर्तन CATransform3D है।

CATransform3D में "स्केल" या "रोटेशन" नाम की कोई संपत्ति नहीं है।

मेरा प्रश्न है: कुंजीपैथ द्वारा "स्केल" और "रोटेशन" की पहचान कैसे की जाती है?

उत्तर

23

कोर एनीमेशन परतों के कुछ संरचना-प्रकार गुणों के फ़ील्ड (या छद्म फ़ील्ड) के प्रत्यक्ष पते का समर्थन करने के लिए केवीसी को बढ़ाता है। सुविधा Core Animation Extensions To Key-Value Coding में वर्णित है।

+5

उदाहरण के लिए, उस सूची में 'scale.xy' नहीं है। तो यह पूरा नहीं हुआ है। मुझे सभी महत्वपूर्ण पथ या गायब लोगों को कहां मिलना चाहिए? –

2

मुझे यकीन नहीं है, लेकिन मुझे एक समाधान मिला जो शायद मदद कर सकता है।

स्विफ्ट: बजाय एक स्ट्रिंग आप इस का उपयोग कर सकते लेखन के :

let shadowAnimation = CABasicAnimation(keyPath: #keyPath(CALayer.shadowRadius)) 

आप CALayer टाइप करते हैं। < - स्वत: पूर्ण आपको उपलब्ध कीपैथ देना चाहिए।

मुझे उम्मीद है कि इससे मदद मिलती है।

संबंधित मुद्दे