2009-01-09 17 views
38

की कचरा एनीमेशन कैसे दोहरा सकता हूं, मैंने अपने UIToolBar में UIBarButtonSystemItemTrash के UIBarBUtton को रखा है। दबाए जाने पर, मैं Mail.app की एनीमेशन को दोहराना चाहता हूं: बिन खुलता है, UIView folds और इसमें मक्खियों।
क्या आईफोन एसडीके के माध्यम से इस एनीमेशन तक पहुंचने का कोई तरीका है?मैं अपने आईफोन ऐप में Mail.app

वर्तमान में मैं एक कस्टम बनाई गई एनीमेशन का उपयोग कर रहा हूं, लेकिन कुछ सीमाएं हैं; उदाहरण के लिए, मैं बिन को एनिमेट नहीं कर सकता। क्या आपके पास कोई सुझाव है? कोड नमूने?

चीयर्स,
डेविड

+8

तो, लोगों: कैसे है कि निजी एपीआई के बिना करना है? – dontWatchMyProfile

+0

हाय nutsmuggler यदि मैं एक ही एनीमेशन की कोशिश कर रहा हूं तो मुझे चलते समय वक्र को कैसे फोल्ड करना नहीं है ...... यदि संभव हो तो यह बताएं कि –

+3

@jeeva haha ​​मुझे यह कितना आकस्मिक रूप से आप उसका नाम –

उत्तर

34

एनीमेशन पर suckEffect प्रकार का उपयोग करें। इसके अलावा: spewEffect, genieEffect, unGenieEffect, twist, tubey, swirl, cameraIris, cameraIrisHollowClose, cameraIrisHollowOpen, rippleEffect, charminUltra, zoomyIn, और zoomyOut। सिम्युलेटर में काम नहीं करता है।

CATransition *animation = [CATransition animation]; 
animation.type = @"suckEffect"; 
animation.duration = 2.0f; 
animation.timingFunction = UIViewAnimationCurveEaseInOut; 
view.opacity = 1.0f; 
[view.layer addAnimation:animation forKey:@"transitionViewAnimation"]; 

नोट: कोड स्निपेट को बड़े कोडबेस से खींचा गया था। मैं यह काम करता है आशा :)

+15

यह निजी एपीआई का उपयोग कर रहा है। अगर ऐप्पल उन ऐप को शामिल करने के लिए आपके ऐप को अस्वीकार करता है तो आश्चर्यचकित न हों, और विशेष रूप से आश्चर्यचकित न हों अगर आपका ऐप ओएस अपडेट के बाद अजीब तरीके से व्यवहार करना शुरू कर देता है। मैं दृढ़ता से अनुशंसा करता हूं कि आप इससे दूर रहें। –

+0

हाँ, यह बहुत निजी एपीआई है और पूरी तरह से असमर्थित है। अज्ञात एनीमेशन प्रकारों के लिए फ़ॉलबैक एक फीका प्रभाव है, हालांकि इन-हाउस या ओपन टूलचेन विकास के लिए उपयोग करना सुरक्षित है। ऐप स्टोर स्वीकृति निजी एपीआई के संबंध में एक मिश्रित बैग है लेकिन मुझे संदेह है कि वे इस उपयोग को अस्वीकार कर देंगे। – rpetrich

+0

आप कभी नहीं जानते कि ऐप्पल कौन सा ऐप अस्वीकार कर सकता है और क्यों! क्यों, उन्होंने कुछ बड़ी कंपनियों को भी निजी एपीआई का उपयोग करने दिया! – lostInTransit

10

दुर्भाग्य से, मुझे लगता है कि यह एक पूरी तरह से कस्टम एनिमेशन होने की जरूरत जा रहा है। UIView फोल्डिंग को कोर एनीमेशन का उपयोग करके अनुमानित किया जा सकता है, शायद UIView की अंतर्निहित परत के CATransform3D में परिप्रेक्ष्य जोड़कर UIView को एक ट्रैपेज़ॉयड में विकृत करने के लिए जो ट्रैश कैन में चूस जाता है।

जहां तक ​​ट्रैश कर सकता है, आप initWithCustomView का उपयोग करके UIBarButtonItem बना सकते हैं: जो आपको एक कस्टम UIView डालने दे सकता है जिसमें एनिमेटेबल ट्रैशकेन है। ऐसा लगता है कि ट्रैश में दो तत्व हो सकते हैं, आधार और ढक्कन, जो स्वतंत्र रूप से घुमाए जा सकते हैं और कर सकते हैं। दोनों के लिए पीएनजी बनाएं, उनके लिए UIImageViews बनाएं, और उन्हें UIBarButtonItem कस्टम व्यू के सबव्यूव बनाएं। खोलने और बंद करने के लिए, सबव्यूज़ को एनिमेट करने के लिए घूर्णन परिवर्तनों को लागू करें।

+1

पसंद करते हैं मुझे डर था कि मुझे यह जवाब मिल जाएगा :) एक बात जो मुझे चिंतित है वह यह है कि ऐप्पल के ऐप्स को बहुत बारीकी से बदलना एक व्यक्ति को एक निजी एपीआई का उपयोग करने के आरोप में खारिज कर दिया जा सकता है। इसके अलावा, मैं ऐप्पल के अपने बिन को पकड़ने और इसे फिर से छीनने के लिए confortable नहीं हूँ, लेकिन शायद मैं सिर्फ एक डरावनी बिल्ली हूँ। – nutsmuggler

+4

यदि आप प्रकाशित इंटरफेस से अपना स्वयं का कार्यान्वयन कर रहे हैं तो आपको डरने के लिए कुछ भी नहीं है। आपको प्रारंभिक अस्वीकृति मिल सकती है, लेकिन वे आपकी प्रतिक्रिया सुनेंगे और इसे मंजूरी दे देंगे। स्पष्ट रूप से, पूरी अस्वीकृति के बारे में रिपोर्टें ओवरलैउन हैं। –

+1

यह सच है (शायद बहुत देर हो चुकी प्रतिक्रिया) .. अधिकांश ऐप्स स्टोर में एक तरफ या दूसरे में समाप्त होते हैं। – Jake

11

बस कुछ जानकारी जोड़ने के लिए:

  1. आप मानक +[UIView setAnimationTransition:forView:cache:] के साथ "suckEffect" का उपयोग कर सकते हैं। बस संख्या 103 को एनीमेशन ट्रांज़िशन चर पर पास करें। यह ऐप्पल द्वारा आपके ऐप को अस्वीकार करने से नहीं बचाएगा हालांकि: पी
  2. "स्पूफेक्ट", "जीनीफेक्ट", "unGenieEffect", आदि iPhoneOS 3.x पर मौजूद नहीं हैं। छोड़ा गया एकमात्र अनियंत्रित संक्रमण "घन" (-), "रिपपल एफेक्ट" (110), तीन "कैमराइरिस" प्रभाव (105,106,107) और "suckEffect" (103) है।

विवरण के लिए http://www.iphonedevwiki.net/index.php?title=UIViewAnimationState देखें।

इसके अलावा, बिन को एनिमेट करने के लिए (निजी एपीआई के साथ): http://www.iphonedevwiki.net/index.php?title=UIToolbar#Animating_the_trash_can_icon

+0

धन्यवाद, बहुत अच्छा सुझाव! – nutsmuggler

4

मुझे यकीन नहीं है कि यह एक उत्तर है लेकिन here वह lib है जो "जीनी प्रभाव" करता है, इसलिए यह आपके द्वारा प्राप्त की जाने वाली चीज़ों के समान ही है।

CGRect endRect = CGRectMake(30, 40, 50, 60); 
[view genieInTransitionWithDuration:0.7 
        destinationRect:endRect 
        destinationEdge:BCRectEdgeTop 
         completion:^{ 
          NSLog(@"I'm done!"); 
          }]; 

Genie IN

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