요링겔님 블로그에서 퍼옴
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 mainBundle] loadNibNamed:@"CautionViewControllerPad_L"owner:self options:nil];
UIView *aView = [nibObjs objectAtIndex:0];
self.view = aView;
[self printVersionOnCautionView];
} else {
NSArray *nibObjs = [[NSBundle mainBundle] loadNibNamed:@"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 |