2011-06-10 2 views
8

앱이 시작 이미지에서 첫 번째보기로로드 될 때 부드러운 전환을 구현할 수 있습니까?시작 이미지에서 기본보기로 부드럽게 전환

기본 동작은 켜기/끄기로 즉각적인 변경과 함께 시작 이미지가 나타나고 순간적으로 사라져 주 뷰 컨트롤러가 실행됩니다. 나는 약간의 페이드 (fading) 또는 확대 또는 축소를 구현하고 싶다.

이것이 가능합니까?

감사합니다.

답변

15

프레임 워크 지원은 없지만 수동으로 직접 수행하면 그 결과를 얻을 수 있습니다. 시작 이미지가 무엇이고 UI가 어떻게 생겼는지에 따라 다양한 방법으로 할 수 있지만 기본적으로 첫 번째보기 컨트롤러를로드하고로드 할 때 이미지보기에 default.png 이미지를 표시합니다. 그런 다음 이미지의 페이드를 움직여 실제 UI를 나타냅니다.

+0

는 깨끗하고 간단한 해결책이 될 것 같습니다! – marzapower

2

운이 좋다. 방금 전 몇 분 전에 했어요. 스플래시 화면이 필요합니다. 장치가로드하는 기본 이미지와 정확히 동일한보기의 이미지. 그런 다음 응용 프로그램에서이 viewDidAppear 기능

- (void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 
    [self performSelector:@selector(killSplashScreen) withObject:nil afterDelay:1.0]; 

} 

- (void)killSplashScreen { 
    [UIView animateWithDuration:0.5 animations:^{splashScreen.alpha = 0.0;} completion:NULL]; 
} 
0

우리는 종종이 일을 "splashView"라는 것을 사용에서 호출 페이드 애니메이션을 해제합니다. 그것은 Shannon Applecline에 의해 작성되었으며 CC 라이센스하에 사용 가능합니다. 당신은 그것을 찾기 위해 인터넷 검색을해야 할 것입니다.

// 
// splashView.h 
// version 1.1 
// 
// Created by Shannon Appelcline on 5/22/09. 
// Copyright 2009 Skotos Tech Inc. 
// 
// Licensed Under Creative Commons Attribution 3.0: 
// http://creativecommons.org/licenses/by/3.0/ 
// You may freely use this class, provided that you maintain these attribute comments 
// 
// Visit our iPhone blog: http://iphoneinaction.manning.com 
// 
7

수정 된 Dancreek의 답변은 AppDelegate 응용 프로그램에서 모두 수행했습니다. didFinishLaunchingWithOptions. 코드가 앱 시작시에만 실행되도록 보장되고 뷰 컨트롤러를 오염시키지 않으므로이 기능이 마음에 들었습니다.

그것은 매우 간단합니다

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 

    // set up your root view and stuff.... 

    //.....(do whatever else you need to do)... 

    // show the main window, overlay with splash screen + alpha dissolve... 

     UIImageView *splashScreen = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Default.png"]]; 
    [self.window addSubview:splashScreen];   
    [self.window makeKeyAndVisible]; 

    [UIView animateWithDuration:0.3 animations:^{splashScreen.alpha = 0.0;} 
        completion:(void (^)(BOOL)) ^{ 
          [splashScreen removeFromSuperview]; 
        } 
    ]; 
} 
+1

addSubview 행을 다음과 같이 변경해야합니다. [self.window addSubview : splashScreen]; 하지만 큰 효과가 있습니다. – codefinger

+0

@joekutner 예, 뒤늦은 견해로는 스플래시를 창에 직접 추가하는 것이 일반적인 해결책입니다. 그것은 항상 효과가있을 것입니다. 내가 나를 위해 일한 것은 사실이지만 초기 뷰 설정에 따라 다릅니다. 대답에 해결책을 넣어주세요.) – n13

+0

더 나은 방법은 스플래시 이미지보기 용으로 별도의 UIWindow를 만들고 기본 창 위에 창 수준을 설정하는 것입니다. 이렇게하면 초기화 코드의 다른 부분이 메인 윈도우에 나중에 추가 서브 뷰를 추가하더라도 이미지가 맨 위에 유지됩니다. –

관련 문제