2010-09-08 30 views
5

मैं एक विंडो में UIImageView के साथ एक पृष्ठ कर्ल संक्रमण को बढ़ावा देने की कोशिश कर रहा हूं। यह कोड मेरी मुख्य init विधि में है:आईफोन पेज कर्ल संक्रमण एनीमेशन

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:1.5]; 
[UIView setAnimationDelay:delay]; 
[UIView setAnimationBeginsFromCurrentState:YES]; 
[UIView setAnimationDidStopSelector:@selector(animCompleteHandler:finished:context:)]; 
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:splashImage cache:YES]; 

splashImage.frame = CGRectMake(-320, 0, 10, 10); 
//[splashImage removeFromSuperview]; 

[UIView commitAnimations]; 

छवि स्थिति और आकार को एनिमेट करती है लेकिन कोई कर्ल नहीं है। अगर मैं removeFromSuperView को अपूर्ण करता हूं तो यह तुरंत गायब हो जाता है। कोई विचार?

अद्यतन:

कोड बदल लिया है तो यह लार्स एक एनीमेशन ट्रिगर और एनीमेशन और कॉलबैक सहित fantasticlly साफ रास्ता का उपयोग करता है ...

[UIView animateWithDuration:1.5 
         delay:delay 
        options: UIViewAnimationTransitionCurlUp 
       animations:^{splashImage.alpha = 0;} 
       completion:^(BOOL finished){[splashImage removeFromSuperview];} 
]; 

दुर्भाग्य पेज कर्ल बस नहीं होता है । हालांकि यह फीका है।

मुझे यकीन नहीं है कि यह वाक्यविन्यास के साथ कुछ करना है या तथ्य यह है कि SplashImageUIImageView कक्षा UIWindow में मेरे मुख्य दृश्य की वस्तु है। संक्रमण को बनाने के लिए शायद इसे UIView में होना चाहिए।

उत्तर

8

की तरह कुछ का प्रयास करें: और

[UIView transitionWithView:splashImage 
     duration:1.5 
     options: UIViewAnimationOptionTransitionCurlUp 
     animations^{ 
      splashImage.frame = CGRectMake(-320, 0, 10, 10); 
     } 
     completion:^(BOOL finished){ 
      [splashImage removeFromSuperview]; 
      //animCompleteHandlerCode.. 
     } 
]; 

जांची नहीं हो सकता है कुछ वाक्यविन्यास त्रुटियों लेकिन यह एक कोशिश दे!

या हो सकता है यह बेहतर है:

[UIView animateWithDuration:1.5 
     delay:delay 
     options: UIViewAnimationOptionTransitionCurlUp 
     animations^{ 
      splashImage.frame = CGRectMake(-320, 0, 10, 10); 
     } 
     completion:^(BOOL finished){ 
      [splashImage removeFromSuperview]; 
      //animCompleteHandlerCode.. 
     } 
]; 
+0

मैं अभी तक इस की कोशिश की नहीं है, लेकिन मैं intrigued रहा हूँ आपके कोड से!^क्या करता है? क्या यह कार्यों को एम्बेड करने का एक तरीका है? –

+1

ये आईओएस 4.0 के लिए नए ब्लॉक हैं। मैं आपको ब्लॉक पर पढ़ने के लिए प्रोत्साहित करता हूं। आईओएस के लिए बढ़िया जोड़ा। इसे देखें: http://developer.apple.com/library/ios/#featuredarticles/Short_Practical_Guide_Blocks/index.html यदि मैं आपके कोड को सही ढंग से समझता हूं कि आप क्या करना चाहते हैं तो एक पृष्ठ को घुमाएं और साथ ही साथ आगे बढ़ें और इसे स्केल करें? – LarsJK

+0

अच्छी तरह से चलती और स्केलिंग वास्तव में महत्वपूर्ण नहीं है ... मैं बस संक्रमण को ट्रिगर करना चाहता था। परीक्षण करने के लिए बस उस परिवर्तन का उपयोग कर रहा था यह काम कर रहा था। मुझे बस स्पलैश छवि को पेज कर्ल दूर करने की आवश्यकता है। इसे एक संक्रमण के रूप में ट्रिगर करने के लिए मुझे दृश्य में कुछ करने की ज़रूरत है। क्या यह 'छुपा' के साथ काम करेगा? वैसे भी, मैं अब कुछ परीक्षण चला रहा हूँ। आपकी प्रतिक्रिया के लिए धन्यवाद। –

1

@Larsaronen: उदाहरण के लिए धन्यवाद, यह मैं वास्तव में क्या जरूरत थी! मैं बस एक साधारण पेज कर्ल जबकि छवियों पहले प्रदर्शित किए जाते हैं चाहता था, इसलिए मैं 0 के बजाय 1.0 की एक अल्फा इस्तेमाल किया, और नहीं के बराबर करने के लिए पूरा होने कॉलबैक सेट:

// set a page curl animation for the specified UIImageView control 
- (void) setAnimationPageCurl:(UIImageView *)imageView { 

    [UIView transitionWithView:imageView 
         duration:1.5 
         options:UIViewAnimationOptionTransitionCurlDown 
        animations:^ { imageView.alpha = 1.0; } 
        completion:nil]; 
} 
संबंधित मुद्दे