우리의 길동이는 아이폰 어플시작화면을 만들려고 한다.

이래저래 복잡한거는 제치고, 가장쉬운것을 찾아낸다.

이름하여 sleep()함수!!

resource폴더에 default.png파일을 넣고, didFinishLaunchingWithOptions함수안에 sleep(5);를 추가해줬다.

아싸!! 하지만, 이건 뭔가 좀 꼼수같기도 하다.

다른  개발자 사이트에 찾아보니, 좋지 않은 코드라고 하면서 NSTimer를 써보라며 길동에게 던져줬다.

NSTimer는 머지? 특정 시간이후에 특정함수를 호출하는 기능(콜백)을 가진 클래스라고 한다. 오호! 물론 일정간격으로 특정함수를 여러번 호출도 가능하다. 이 정도만 알아도 충분하다.

참고로 HIG가이드 라인을 지키기 위해서는 꼭 default.png파일이 있어야 한다고 한다.

물론 sleep함수를 쓰지 않아도 default.png파일이 존재하면 intro화면이 나타나긴 한다.


하지만, 시간도 짧을 뿐만 아니라 내 맘대로 할수 없다는 게 문제다.


그럼 default.png파일을 넣고, sleep()함수를 쓰지 않고, 내 맘대로 시간을 좀더 길게 잡을 수는 없을까?

다음 코드를 살펴보자.

Appdelegate.h
NSTimer *timer;
UIImageView *IntroImage;

Appdelegate.m
//didFinishLaunchingWithOptions함수안에
//3초간격으로 func함수를 호출한다. 반복해서 호출하지 않겠다.
timer = [NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(func:) userInfo: nil repeats: NO];

//화면에 뿌릴 뷰를 정한다.
IntroImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
//HIG 가이드라인에 걸리지 않기 위해선 default.png파일을 넣어주어야 한다.
IntroImage.image = [UIImage imageNamed:@"default.png"]; 

//현재 메인뷰에 이미지뷰를 등록한다. 등록한 시점부터 화면에 표시됨.
[window addSubview:IntroImage];

// 맨 앞으로 뷰를 이동시킨다.
[window bringSubviewToFront:IntroImage]; 


-(void) func:(NSTimer*)timer
{
 [window makeKeyAndVisible];
 [IntroImage removeFromSuperview];
 // splash screen 다음에 취할 코드를 여기부터 기록한다.
 // ex. [window addSubview:...];
}

-(void)dealloc{
 [IntroImage release];
 IntroImage=nil;
 [timer invalidate];
}


[원문]http://jhlee330.blogspot.kr/2010/08/splash-screen.html

'개발 > iOS Dev' 카테고리의 다른 글

UIKeyboard에 대한 것들(키보드 다루기)  (0) 2012.10.11
연락처 가져오기  (0) 2012.09.18
애플 개발자 등록 절차  (0) 2012.09.05
.plist 데이터 입력과 읽기  (0) 2012.09.05
RSS reader 예제  (0) 2012.08.22

+ Recent posts