본문 바로가기
Developer/IOS

동적 xib 파일 교체

by MindOpener 2013. 3. 19.
반응형

요링겔님 블로그에서 퍼옴

http://xajax.tistory.com/138   <--- 원문 


동적 xib 파일 교체


1. willRotateToInterfaceOrientation 영역에서 정의해야 합니다. (UIViewController Event)

2. toInterfaceOrientation 를 통해 회전상태를 알 수 있습니다.

3. NSBundle을 통해 배열형태의 xib 파일을 가져옵니다. 첫 번째 요소가 최상위 계층의 UIView입니다.

4. owner는 file's Owner(인터페이스 빌더에서 본...)를 말하며 self.view = [로드된 뷰] 로 교체합니다.

5. self.view 에 반영이 되면 곧바로 IBOutlet 연결이나 IBAction이 적용되어 자연스럽게 사용할 수 있습니다.


/* 로테이션 xib 교체 루틴 */

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration

{

    if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation)) {

        NSArray *nibObjs = [[NSBundle mainBundleloadNibNamed:@"CautionViewControllerPad_L"owner:self options:nil];

        UIView *aView = [nibObjs objectAtIndex:0];

        self.view = aView;

        [self printVersionOnCautionView];

    } else {

        NSArray *nibObjs = [[NSBundle mainBundleloadNibNamed:@"CautionViewControllerPad"owner:self options:nil];

        UIView *aView = [nibObjs objectAtIndex:0];

        self.view = aView;

        [self printVersionOnCautionView];

    }

    /* 존재하면 제거 */

    if ([defaultImage superview]) [self removeDefaultImage];

}


뷰의 회전


뷰나 델리게이터에서는 보다 뷰 컨트롤러에서 회전은 매우 적용하기 쉽습니다. Rotation Event에 관여하는 메서드가 정의되어 있기 때문이죠. 만약 이런 이벤트를 감지하기 어려운 영역이라면 다음과 같은 코드로 모두 체크하는 방법뿐입니다.


[UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationLandscapeLeft

반응형

'Developer > IOS' 카테고리의 다른 글

xcode 배경 반복 ..  (0) 2013.03.19
멀티 애니메이션  (0) 2013.03.19
IOS date 핸들링.  (0) 2013.03.18
Timer use  (0) 2013.03.04
메모리 릭 에러 memory leak  (0) 2013.02.28