2012-11-15 48 views
0

當我使用下面提到的代碼時,我在iPhone模擬器上獲得了淡出的所需初始屏幕,但圖片似乎用因子2縮放:我只能看到我的初始圖片左上角四分之一(=發射圖像),放大到全屏。在啓動畫面啓動之前,啓動映像本身的大小顯示爲正確大小。初始屏幕iOS僅顯示在模擬器上並且大小錯誤

代碼在AppDelegate中的didFinishLaunchingWithOptions中輸入。

// Splash screen 
    UIImageView*imageView=[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"IMG_1357.png"]]; 
    [[navigationController view] addSubview:imageView]; 
    [[navigationController view] bringSubviewToFront:imageView]; 

    // as usual 
    [self.window makeKeyAndVisible]; 

    //now fade out splash image 
    [UIView transitionWithView:self.window duration:4.0f options:UIViewAnimationOptionTransitionNone animations:^(void){imageView.alpha=0.0f;} completion:^(BOOL finished){[imageView removeFromSuperview];}]; 

此外初始屏幕似乎沒有出現在設備(iPhone 4S(視網膜)與iOS 6.0)上,只在模擬器上:當在iPhone上運行,它只顯示啓動圖像。

這兩個問題的原因和解決方案是什麼? 在此先感謝!

+0

至於一個事實,即閃屏沒在設備上顯示:這是通過在文件名中的差異造成的。代碼中的擴展名是小寫字母,而實際文件是大寫字母(PNG)擴展名。 – user1492198

回答

2
  1. 安裝框架ImageView的,否則具有相同的尺寸作爲圖像
  2. 設置正確contentMode
  3. 嘗試使用self.window,代替[navigationController視圖]

實施例:

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"IMG_1357.png"]]; 
imageView.contentMode = UIViewContentModeScaleAspectFill; 
imageView.frame = self.window.bounds; 
[self.window addSubview:imageView]; 
[imageView release]; 

[self.window makeKeyAndVisible]; 

//now fade out splash image 
[UIView transitionWithView:self.window 
        duration:4.0f 
        options:UIViewAnimationOptionTransitionNone 
       animations:^(void) { 
        imageView.alpha = 0.0f; 
       } 
       completion:^(BOOL finished){ 
        [imageView removeFromSuperview]; 
       }]; 

要淡出之前出添加1秒的停頓:

int64_t delayInSeconds = 1.0; 
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC); 
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ 
    [UIView transitionWithView:self.window 
         duration:4.0f 
         options:UIViewAnimationOptionTransitionNone 
        animations:^(void) { 
         imageView.alpha=0.0f; 
        } 
        completion:^(BOOL finished){ 
         [imageView removeFromSuperview]; 
        }]; 
}); 

[self performSelector:@selector(_hideSplash:) withObject:imageView afterDelay:1.0]; 

- (void) _hideSplash:(UIView *)view 
{ 
    [UIView transitionWithView:self.window 
         duration:4.0f 
         options:UIViewAnimationOptionTransitionNone 
        animations:^(void) { 
         view.alpha=0.0f; 
        } 
        completion:^(BOOL finished){ 
         [view removeFromSuperview]; 
        }];  
} 
+0

非常感謝! 1.和2.解決了我的問題。 3.沒有爲我工作:該變化阻止了我的閃屏顯示。 在淡出之前,我需要更改或添加什麼才能添加1秒暫停? 我想投票,但似乎沒有贏得足夠的聲譽呢.. :( – user1492198

+0

我已更新示例代碼,以顯示如何添加暫停前淡出 –

+0

再次感謝!我試過第二個解決方案,它的工作原理! – user1492198