'IOS'에 해당되는 글 6건

  1. 2012.03.28 #20120328-02 :: iOS :: CATransition 효과
  2. 2012.03.28 #20120328-01 :: iOS :: 화면전환 딜레이 문제
  3. 2012.01.18 [Objective-C] sscanf를 대신하는 방법
  4. 2011.09.09 [Objective-C] 함수 포인터 사용하기
  5. 2011.09.08 [iOS] "Status Bar"를 숨기는 세가지 방법
  6. 2011.04.29 [iOS] UIInterfaceOrientation 알아내기

#20120328-02 :: iOS :: CATransition 효과

화면 전환시 CATransition을 사용 했을 때의 효과

책(터칭! 아폰 SDK 3.0)이나 애플 문서의 설명만으로는 정확히 이해되지 않아 정리함


kCATransitionFade: 기존 화면이 서서히 사라지고 새 화면이 서서히 나타남

kCATransitionMoveIn: 기존 화면이 있는 상태에서 새 화면이 밀고 들어와 덮는 효과

kCATransitionPush: 기존 화면이 밀려나면서 새 화면이 밀고 들어오는 효과

kCATransitionReveal: 기존 화면이 밀려나가면 그 밑에 새 화면이 있는 효과

#20120328-01 :: iOS :: 화면전환 딜레이 문제

iOS Framework를 개발 중 화면 전환시 화면 교체 딜레이가 발생

각 페이지 전환 시 이전 화면이 사라지고 다음 화면이 사라지기 전에 흰색 화면이 보임

상태 확인 중 비디오 객체가 있는 곳에서 발생하는 것을 확인

페이지 전환 전에 MPMoviePlayerController의 뷰를 부모에서부터 제거해야 함

메모리 할당 및 해제와 상관 없이 비디오 뷰가 있으면 화면 지연이 일어나는 것을 확인

[Objective-C] sscanf를 대신하는 방법


Objective-C에서는 NSString에 대하여 sscanf와 같은 역할을 하는 함수가 없다.
오늘 누군가 이에 대한 질문을 해서 잠시 찾아 본 결과
다음과 같은 두 가지 방법을 찾을 수 있었다.

1. NSRegularExpression 
이 클래스는 정규식에 대한 클래스로 iOS 4.0부터 지원한다. [링크]
요즘 Python/Django와 Javascript를 주로 사용하면서 정규식에 매우 친숙해졌기 때문인지
문자열 처리와 관련된 문제들에 대해서는 항상 정규식이 가장 먼저 떠오른다.

2. NSScanner
이 클래스는 iOS 2.0부터 지원한다.
대충 내용을 본 결과 제외할 형식과 찾아낼 형식을 차례로 스캔하면서 값을 얻는 듯 하다.
쓸데 없이 복잡해보이며, 정규식에 비해 좀 더 고정된 형식을 파싱할 때 유용해 보인다.

현재 본 업무가 아니기에 위 두 방법에 대한 검증은 후에 시간이 되면 정리하겠다.

 

[Objective-C] 함수 포인터 사용하기


C/C++에서 종종 사용되는 함수 포인터를
Object-C에서는 어떻게 구현해야 하는가에 대한 샘플 코드이다.
 


// .h --------------------------------

@interface .. {
    NSDictionary* funcMap_;
}

- (void)add;
- (void)subtract;
- (void)multiply;
- (void)divide;


// .m --------------------------------

- (id)init

{
    ... 

    NSArray* fps = [NSArray arrayWithObjects:

                    [NSValue valueWithPointer:@selector(add)],
                    [NSValue valueWithPointer:@selector(subtract)], 

                    [NSValue valueWithPointer:@selector(multiply)],

                    [NSValue valueWithPointer:@selector(divide)], nil];

    NSArray* keys = [NSArray arrayWithObjects:@"a", @"s", @"m", @"d", nil];

    funcMap_ = [[NSDictionary alloc] initWithObjects:fps forKeys:keys];
    ... 

}

- (void)click:(NSString*)command
{

    NSValue* value = [funcMap_ objectForKey:command];

    if (value) {

        SEL fp = [value pointerValue];

        [self performSelector:fp];

    }

}

[iOS] "Status Bar"를 숨기는 세가지 방법


1. 프로젝트 설정 창에서 Info 탭을 선택한다.
    Custom iOS Target Properties 카테고리에 Status bar is initially hidden 항목을 추가한다.
    값이 YES 일 경우 상태바가 안보이며, NO 일 경우 상태바가 나타나게 된다.

2. setStatusBarHidden:
    [[UIApplication sharedApplication] setStatusBarHidden:YES]; 
     위 코드를 이용하면 상태바가 사라진다.
     YES를 NO로 변경하면 상태바가 나타난다.

3. setStatusBarHidden:withAnimation:
   [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
   위 코드를 이용해도 상태바가 사라지며, 애니메이션을 적용할 수 있다.
   YES를 NO로 변경하면 상태바가 나타난다.
   애니메이션의 종류는 
UIStatusBarAnimationFade, UIStatusBarAnimationNone, UIStatusBarAnimationSlide 의 세 가지가 있다.

[iOS] UIInterfaceOrientation 알아내기


const UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];

위 코드를 이용하면 현재 iPhone과 iPod, iPad의 화면 방향을 알 수 있다.