0

Xcode 4.5.2에서 iPad 용 iOS6을 대상으로 스토리 보드 및 하위보기를 사용하고 있습니다. Preamble : 내 루트 컨트롤러 (앱 대리인이로드)는 이미지, 업그레이드 버튼 및 열린 버튼 만있는 스플래시 화면입니다. 앱을로드하는 데 몇 초가 걸립니다. 내 모든 3 개의 전체 화면 컨트롤러에서 shouldAutorotate 및 supportedInterfaceOrientations 있습니다. 회전 알림을 위해 루트보기 컨트롤러에서 다음 두 가지 방법을 사용하고 있습니다.첫 번째보기 (스플래시)에서 첫 번째보기로 회전 문제가 발생합니다.

- (void)awakeFromNib 
{ 
    [UIDevice.currentDevice beginGeneratingDeviceOrientationNotifications]; 
    [NSNotificationCenter.defaultCenter addObserver:self 
             selector:@selector(orientationChanged:) 
              name:UIDeviceOrientationDidChangeNotification 
             object:nil]; 
} 

- (void)orientationChanged:(NSNotification *)notification 
{ 
    UIDeviceOrientation deviceOrientation = [UIDevice currentDevice].orientation; 
    if (UIDeviceOrientationIsLandscape(deviceOrientation)) 
    { 
     // Landscape 
     CGRect rect = _libraryViewController.libraryTableBorder.frame; 
     _libraryViewController.libraryTableBorder.frame = rect; 
     _libraryViewController.libraryTableBorder.image = [UIImage imageNamed:@"LibraryBorder_L.png"]; 
    } 
    else if (UIDeviceOrientationIsPortrait(deviceOrientation)) 
    { 
     // Portrait 
     CGRect rect = _libraryViewController.libraryTableBorder.frame; 
     _libraryViewController.libraryTableBorder.frame = rect; 
     _libraryViewController.libraryTableBorder.image = [UIImage imageNamed:@"LibraryBorder_P.png"]; 
    } 
} 

나는 LibraryViewController에서 이러한 매우 동일한 메소드를 가지고 있으며 완벽하게 작동합니다. 내가 libraryTableBorder에 대한 호출없이 동일한 메서드를 가지고 또 다른 메인보기 컨트롤러 (entryView) 있습니다. 엔트리 뷰에서 회전하는 장치가 어떤 회전을 하든지 테이블 경계가 올바르게 바뀝니다. 라이브러리에서 entryView 또는 스플래시로 이동할 때보기가 정확합니다.

문제는 프리 스플래시보기에서 라이브러리로 이동하는 중입니다. Potrait의 도서관으로 가면 잘 나타나고 표시되는 경계선이 세로 테두리입니다. 그러나 가로 방향에서는 세로 테두리도 표시됩니다. 랜드 스케이프에있을 때 루트보기에서 들어올 때 라이브러리 테두리를 가로로 표시하려면 어떻게합니까?

이 수수께끼를 푸는 데 도움이되는 것이 있으면 매우 감사하겠습니다.

답변

0

나는이 문제에 대한 해결책 ... viewWillLayoutSubviews

내가 iOS6의의 릴리스 노트를 지적 다른 스레드에 의해 메시지가 한을 발견했다. 나는 그것에 UIDeviceOrientation과 if/else 문을 추가했다. 이제 경계선이 어느 방향으로 이동했는지에 관계없이 올바르게 회전합니다.

- (void)viewWillLayoutSubviews 
{ 
    UIDeviceOrientation deviceOrientation = [UIDevice currentDevice].orientation; 
    if (UIDeviceOrientationIsLandscape(deviceOrientation)) 
    { 
     // Landscape 
     CGRect rect = _libraryTableBorder.frame; 
     _libraryTableBorder.frame = rect; 
     _libraryTableBorder.image = [UIImage imageNamed:@"LibraryBorder_L.png"]; 
    } 
    else if (UIDeviceOrientationIsPortrait(deviceOrientation)) 
    { 
     // Portrait 
     CGRect rect = _libraryTableBorder.frame; 
     _libraryTableBorder.frame = rect; 
     _libraryTableBorder.image = [UIImage imageNamed:@"LibraryBorder_P.png"]; 
    } 
} 

이것은 나에게 실망스러운 문제였습니다. 희망이 다른 사람을 도와주세요!