2010-03-17 4 views

답변

26

평상시처럼 앱을 시작한 다음 나타나는 첫 번째보기에 스플래시 화면과 동일한 이미지로 만들어야합니다. 타이머를 시작한 다음 몇 초 후에 해당보기를 실제 응용 프로그램 루트보기로 바꿉니다.

의도적으로 실제 응용 프로그램 실행을 지연시키는 것은 큰 일이 아닙니다.

+10

+1 ... 사용자가 스플래시 화면을 싫어합니다. –

+6

Apple과 마찬가지로 http://developer.apple.com/iphone/library/documentation/UserExperience/Conceptual/MobileHIG/HandleTasks/HandleTasks.html # // apple_ref/doc/uid/TP40006556-CH16-SW2 "정보 창이나 시작 화면을 표시하지 마십시오. 사람들이 응용 프로그램을 즉시 사용하지 못하게하는 다른 유형의 시작 환경을 제공하지 마십시오." –

+4

Sheesh, 그냥 묻습니다. 사과에 문제가 있다면 그들 스스로 저를 꾸짖을 수 있습니다. 그들은 꽤 유능합니다. :) – Moshe

1

이 질문은 비슷하다 splash screen like tap tap revenge 3

기본적으로, 당신의 아래 applicationDidFinishLaunching에 :, 당신의 Default.png를 포함하는 다른 뷰 위에 이미지 뷰를 추가 할 수 있습니다.

11

업데이트 : 진지하게,하지 마세요!

또는 우리에게 아래 applicationDidFinishLaunching이 퍼팅 C 함수

sleep(9); 

가 : 당신이 프로그램을 9 초 동안 일시 정지하게됩니다, 다른 정수도 입력 할 수 있습니다.

편집 : 지난 한 해 동안 많은 것을 배웠습니다. 이러지 마. 그 이유는 스프링 보드가 너무 오래 걸리면 앱 실행이 자동으로 중지되기 때문입니다. 이 타이밍은 문서화가 잘되어 있지 않아 1 초라도 앱이 실패 할 수 있습니다.

+0

9는 길지 만 아마도 1 초입니다. 나는 부유물을 넣을 수 있습니까 (Ie : 1.5)? – Moshe

+0

방금 ​​번호를 던지고있었습니다. 원하는 int를 사용할 수는 있지만 int 여야합니다. –

+2

-1. applicationDidFinishLaunching에서 큰 지연이나 시간을 많이 사용하지 마십시오. 다른 스레드 또는 유사한 타이머에서 사용하십시오. applicationDidFinishLaunching에서 신속하게 반환합니다. http://stackoverflow.com/questions/169470/does-the-iphone-timeout-if-a-function-takes-too-long-to-execute – occulus

1

왜 이런 식으로 앱로드가 지연되지 않아야하는지에 대한 위의 설명을 참조하십시오. 그러나 잠시 동안 잠자는 것이보기를 전환하는 오버 헤드보다 바람직 할 수있는 시나리오가 발생하면 sleep() 대신 NSThread의 sleepForTimeIntervale을 사용하십시오. 더 프레임 워크 친화적 인 당신은 수면 시간을보다 세밀하게 제어 할 수 있습니다 :

[NSThread sleepForTimeInterval:0.75] 
+0

이 접근법의 문제점은 모든 것을 차단한다는 점입니다. 휴면 간격 동안 홈 단추를 누르면 아무 것도 나타나지 않습니다. 더 큰 수면 간격으로 시도해 보면 더욱 분명합니다. – greenisus

0

나는 클라이언트가 시작 이미지를 데모해야만하는 상황이있었습니다. 그래서,이 내 솔루션이었습니다 ..

- (void)applicationDidBecomeActive:(UIApplication *)application 

{

UIImageView *defaultImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"[email protected]"]]; 
[self.window addSubview:defaultImageView]; 
sleep(2); 
[defaultImageView removeFromSuperview]; 
[defaultImageView release]; 
/* 
Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 
*/ 

은}

+0

그것은 시뮬레이터에서만 작동하지 않습니다 :( –

0

당신은이 결과 "

sleepForTimeInterval

를 얻기 위해이 방법을 잘 사용할 수 있습니다

", 당신이 시간을 시작 얻고 싶은 경우에, 좋아하세요 :

- (void) applicationDidFinishLaunching:(UIApplication*)application 
{ 
    [NSThread sleepForTimeInterval:8.0]; 
} 

그것은 팔초

경고에 의해 발사 지연 될 :하지만이 watchdod에 대한 의지로는, 사과로 사용하지 않는 것이 좋습니다 앱로드 시간이 길어 앱을 죽일 수 있습니다. 그러나 특정 스크린 샷을 얻거나 사내에서 사용하기 위해 필요한 경우 앱 용도로는 사용할 수 있지만 앱 제출에는 사용할 수 없습니다.

관련 문제