2011-07-20 9 views
5

में स्नैप करता है मेरे दृश्य में डिडलोड विधि मैं दृश्य के बाईं ओर एक बटन बंद करता हूं, स्क्रीन बंद करता हूं।सेटफ्रेम नहीं चलता है, केवल

तो मैं यह चेतन करने के लिए इन दो तरीके हैं:

-(void) viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:animated]; 

    [self showButton]; 
} 

और विधि:

-(void) showButton { 
    [myButton setTitle:[self getButtonTitle] forState:UIControlStateNormal]; 

    // animate in 
    [UIView beginAnimations:@"button_in" context:nil]; 
    [UIView setAnimationDelegate:self]; 
    [UIView setAnimationDidStopSelector:@selector(animationDone)]; 
    [UIView setAnimationDuration:1.0]; 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseIn]; 
    [UIView setAnimationBeginsFromCurrentState:YES]; 
    [myButton setFrame:kMyButtonFrameCenter]; // defined CGRect 
    [UIView commitAnimations]; 
} 

बटन तुरंत दिखाई देता है और चेतन नहीं है। इसके अलावा, एनीमेशन पूर्ण चयनकर्ता तुरंत कहा जाता है।

यह मेरे बटन को स्क्रीन में क्यों एनिमेट नहीं करता है?

संपादित करें: यह एक एनीमेशन शुरू करने के लिए, जबकि viewDidAppear में ...

+0

अजीब तरह से अगर मैं थोड़ा इंतजार करता हूं, तो एनीमेशन काम करेगा। – TigerCoding

उत्तर

6

मैं अपने एनीमेशन कोड की कोशिश की कोशिश कर के साथ कुछ करने के लिए है और यह ठीक काम करता है।

बटन के आरंभिक फ्रेम को कहां सेट करें? क्या यह संभव है कि आपने एनीमेशन शुरू करने से पहले गलती से बटन के फ्रेम को kMyButtonFrameCenter पर सेट किया हो? यह समझाएगा कि एनीमेशनडोन चयनकर्ता को तुरंत क्यों कहा जाता है।

-(void) showButton { 
    UIButton *myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    [myButton setTitle:@"test" forState:UIControlStateNormal]; 
    myButton.frame = CGRectMake(-100.0, 100.0, 100.0, 30.0); 
    [self.view addSubview:myButton]; 

    // animate in 
    [UIView beginAnimations:@"button_in" context:nil]; 
    [UIView setAnimationDelegate:self]; 
    [UIView setAnimationDidStopSelector:@selector(animationDone)]; 
    [UIView setAnimationDuration:1.0]; 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseIn]; 
    [UIView setAnimationBeginsFromCurrentState:YES]; 
    [myButton setFrame:CGRectMake(100.0, 100.0, 100.0, 30.0)]; 
    [UIView commitAnimations]; 
} 

जैसा कि आप देख मैं अपने एनीमेशन कोड में कुछ भी नहीं बदला:

यहाँ कोड है कि काम करता है। तो मुझे लगता है कि समस्या बटन का फ्रेम है।

थोड़ा सा विषय: यदि आपने आईओएस < 4 के लिए अपना ऐप नहीं बनाया है तो आप आईओवी 4.0 के साथ आए UIView के "ब्लॉकों के साथ एनीमेशन" देखना चाहते हैं।

[UIView animateWithDuration:1.0 delay:0.0 options:UIViewAnimationCurveEaseIn animations:^void{myButton.frame = kMyButtonFrameCenter} completion:^(BOOL completed){NSLog(@"completed");}]; 

=== संपादित ===

अपनी टिप्पणी पढ़ने के बाद, ऐसा लगता है कि मेरी संदेह सही नहीं है। inspire48 अपने उत्तर के साथ सही दिशा में अंक। आप यह सुनिश्चित करें कि बटन स्क्रीन बाहर रखा गया है इससे पहले कि आप एनीमेशन

+0

मैंने इसे डीडएपियर में देखने की कोशिश की लेकिन इसका कोई प्रभाव नहीं पड़ा। हालांकि, मुझे पता चला कि 0.2 की देरी के साथ टाइमर का उपयोग करके सब कुछ काम करेगा। – TigerCoding

+1

क्या आपने इसे करने की कोशिश की है जैसे मैंने उपरोक्त कोड में किया था? क्योंकि यह काम करता है। क्या आपके पास बहुत सारे UIElements हैं जिन्हें दृश्य दिखाई देने पर खींचा जाना चाहिए? – joern

+0

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

3

फोन viewDidAppear में एनीमेशन कॉल रखो बनाने के लिए viewDidAppear विधि के अंदर या showButton विधि में बटन की नियुक्ति रखना चाहिए। viewDidLoad का उपयोग अधिक डेटा-प्रकार सेटअप के लिए किया जाता है। एनीमेशन जैसे किसी भी दृश्य प्रभाव को डीडएपियर में देखना चाहिए। आपने इसकी पुष्टि की है - यदि आप थोड़ा इंतजार करते हैं तो यह काम करता है।

+0

एनीमेशन कॉल देखने में है DidAppear लेकिन हो सकता है कि यह बटन में भी प्लेसमेंट डालने में मदद करता है (इससे पहले कि आप शोबटन विधि को कॉल करें) – joern

+0

मैंने बटन प्लेसमेंट को देखने में पहली बार दिखाई देने की कोशिश की, लेकिन इससे मदद नहीं मिली। – TigerCoding

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