2015-01-15 4 views
8

iPad에서 표준보기의 iOS 8 응용 프로그램에서만 분할보기를 사용하고 있습니다. (iPad가 가로 방향 인 경우 마스터보기와 상세보기가 모두 표시되고 세로 방향 일 때는 세로보기의 경우 왼쪽에서 슬라이드하는 마스터보기가있는 전체 화면으로 전체보기가 표시됩니다.) 마스터보기와 상세보기 모두 마스터에 포함 된 탐색보기 컨트롤러입니다 테이블 뷰 컨트롤러. 마스터 뷰의 테이블에서 선택하면 상세 뷰가 변경됩니다. 이것은 모두 설정되어 올바르게 작동합니다.iOS 8의 UISplitViewController에서 마스터보기의 표시/숨기기 애니메이션하기

그러나 제가하고 싶은 것은 세로 방향으로 마스터 뷰의 테이블에서 선택하면 마스터 뷰가 화면 밖으로 움직여야합니다. 두 번째로, 세로보기 모드에서 마스터 뷰의 테이블을 선택하지 않은 경우 마스터 뷰를 애니메이션으로 표시하고 싶습니다.

모든 안내에 감사드립니다.

답변

18

대답은 preferredDisplayMode 속성에 애니메이션을 적용하는 것입니다. 코드를 표시하려면 것은 :

if (UIInterfaceOrientationIsPortrait([UIDevice currentDevice].orientation)) { 
    [UIView animateWithDuration:ANIMATION_LENGTH animations:^{ 
    self.splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModePrimaryOverlay; 
    } completion:^(BOOL finished) { 
    self.splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModeAutomatic; 
    }]; 
} 

하고 코드를 숨길 수는 다음과 같습니다 분할 뷰 컨트롤러가 정상적인 일을 할 수 있도록 애니메이션이 후

if (UIInterfaceOrientationIsPortrait([UIDevice currentDevice].orientation)) { 
    [UIView animateWithDuration:ANIMATION_LENGTH animations:^{ 
    self.splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModePrimaryHidden; 
    } completion:^(BOOL finished) { 
    self.splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModeAutomatic; 
    }]; 
} 

내가 완성 자동으로 다시 설정 완료되었습니다. 내 세부 항목이 아직 설정되지 않은 경우에만 보여주기 때문에 쇼에 또 다른 부울을 추가합니다. 그러나이 코드는 사용자 고유의 코드에 고유하므로이 코드에서 제거했습니다.

+0

정확하게 찾고자하지만 완료 비트를 제거해야합니다. 그렇지 않으면 다시 마스터에 다시 표시됩니다. – trapper

+0

Xcode 7.3에서는'[UIDevice currentDevice] .orientation'에서 오류 메시지가 나타납니다. 나는 그 사건을'[UIApplication sharedApplication] .statusBarOrientation'으로 바꿀 것을 제안합니다. – David

+0

또한이 애니메이션은 이제 상세 테이블 뷰의 바람직하지 않은 애니메이션을 유발합니다. – David