2012-02-07 12 views
6

जब भी applicationDidBecomeActive कहा जाता है, तो मैं मुख्य स्प्लैश स्क्रीन के लुप्त होने के अनुभव को खराब करना चाहता हूं, लेकिन यह काम नहीं कर रहा है। मैं क्या गलत कर रहा हूं?आईओएस स्प्लैश स्क्रीन (आईफोन 5 फ्रेंडली) फीका हुआ है

- (void)applicationDidBecomeActive:(UIApplication *)application 
{ 
    if(IS_IPHONE_5) 
     splash = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Default-568h.png"]]; 
    else 
     splash = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Default.png"]]; 

    [self.window.rootViewController.view addSubview:splash]; 

    [UIView animateWithDuration:0.5 
        animations:^{ 
         splash.alpha = 0; 
        } 
        completion:^(BOOL finished) { 
         [splash removeFromSuperview]; 
        }]; 
} 

फिर आपको निम्न को परिभाषित करने की आवश्यकता है। मैं प्रोजेक्ट .pch का उपयोग करता हूं लेकिन यदि आप चाहें तो अपने हेडर का उपयोग कर सकते हैं।

#define IS_IPHONE_5 (fabs((double)[ [ UIScreen mainScreen ] bounds ].size.height - (double)568) < DBL_EPSILON) 

उत्तर

3

यदि यह वास्तव में आपका कोड है, तो आपके पास शायद छवि नाम में एक टाइपो है। (यदि नहीं, तो हमें बताएं कि "काम नहीं कर रहा" का अर्थ है।)

इसके अलावा, स्प्लैश स्क्रीन आम तौर पर प्रत्येक applicationDidBecomeActive: पर नहीं आती है। didFinishLaunchingWithOptions: वह समय है जब आप जानते हैं कि आपको लॉन्च किया गया है और आपकी ओर से स्प्लैश स्क्रीन दिखाई गई है।

+1

विषम, सिम्युलेटर में स्पलैश हर बार होता है, लेकिन डिवाइस में यह केवल प्रारंभिक लोड पर होता है। जानकार अच्छा लगा। – Jacksonkr

2

आपका कोड सही दिखता है; मैं इसे कई ऐप्स में करता हूं।

हालांकि, आप इसे applicationDidFinishLaunching:options: के हिस्से के रूप में करना चाहते हैं और applicationDidBecomeActive: में नहीं। यह दिखाए जाने पर स्प्लैश स्क्रीन को फीका करने के लिए केवल समझ में आता है, जो केवल तब होता है जब ऐप लॉन्च होता है और पहले से नहीं चल रहा है। जब आपका ऐप सक्रिय हो जाता है, तो यह पृष्ठभूमि में हो सकता है - यानी पहले ही लॉन्च किया गया है - इसलिए इस मामले में स्प्लैश स्क्रीन को लुप्त करने से कोई फर्क नहीं पड़ता।

या, क्या आप चाहते हैं कि आपकी स्प्लैश स्क्रीन हमेशा सक्रिय होने पर दिखाई दे, भले ही इसे किसी निलंबित राज्य से पृष्ठभूमि से फिर से शुरू किया जाए?

3

rootViewController.view की बजाय इसे सीधे अपनी विंडो में जोड़ने का प्रयास करें।

[self.window addSubview:splash]; 

तुम भी स्टार्टअप छवि के साथ संरेखित करने के लिए view.transform का उपयोग कर छवि को घुमाने के लिए आवश्यकता हो सकती है।

6

मुझे लगता है, iOS6 आप एक अच्छा इस

-(BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    [UIView animateWithDuration:0.2 
          delay:0 
         options: UIViewAnimationCurveEaseIn 
        animations:^{ 
         self.window.viewForBaselineLayout.alpha = 0; // and at this alpha 
        } 
        completion:^(BOOL finished){ 
        }]; 

    return YES; 
} 

तो

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 

    [UIView animateWithDuration:0.5 
          delay:0 
          options: UIViewAnimationCurveEaseOut 
         animations:^{ 
         self.window.viewForBaselineLayout.alpha = 1; // and at this alpha 
        } 
        completion:^(BOOL finished){ 
        }]; 

के शुरू में तुरंत कर संक्रमण मिलता है अब यह लोड करने के लिए एक क्रॉस fadeish लोड हो रहा है स्क्रीन से प्रभाव देता से ऐप स्क्रीन

+0

हेक्टेयर यह सही समाधान है –

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