문제

UIView를 처리하는 UIViewController의 서브 클래스가 있습니다. ViewController는 모드로 표시됩니다 (화면 하단에서 미끄러짐). 보기 상단에는 내비게이션 바를 추가했습니다. 이 막대는 내비게이션 컨트롤러에 의해 처리되지 않습니다.

뷰가 조경으로 회전 할 때 (UinavigationController가 처리 할 때 동작하는지와 유사 함) Navbar가 높이가 줄어들고 싶습니다. 그러나 IB의 자동화 된 마스크를 유연한 높이로 설정할 수 없으며 코드에서 그렇게하면 Navbar가 완전히 사라집니다.

이것을 할 방법이 있습니까? UinavigationController가 어떻게 수행됩니까?

추신 : 제목의 텍스트를 엉망으로 만들기 때문에 스케일링 변환에 의지하지 않아도됩니다.

편집 : 약간의 도움으로 해결하고 아래에 게시 된 답변을 읽었습니다.

도움이 되었습니까?

해결책 2

나는 해결책을 찾았고, 후시적으로 나는 오히려 어리석은 느낌이 든다. 나는 Navbar의 Autoresize 마스크에 유연한 바닥 여백을 포함시켜야했습니다. 크레딧은이 스레드의 사용자 raynewbie에 의한 것입니다.

http://discussions.apple.com/thread.jspa?messageid=8295525

다른 팁

자동화 된 마스크를 설정하는 대신 ViewWillAppear와 DidrotateFrominterfaceorientation에서 현재 방향을 확인하고 적절한 프레임을 설정하지 않겠습니까?

- (void) updateNavBar {
    UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
    if ((UIInterfaceOrientationLandscapeLeft == orientation) ||
        (UIInterfaceOrientationLandscapeRight == orientation)) {
        myNavBar.frame = CGRectMake(0, 0, 480, 34);
    } else {
        myNavBar.frame = CGRectMake(0, 0, 320, 44);
    }
}
- (void) viewWillAppear {
    [self updateNavBar];
    // ... SNIP ...
}
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
    [self updateNavBar];
    // ... SNIP ...
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top