2014-11-25 2 views
0

В моей App (цели развертывания IOS, 7) для демонстрации изображений с использованием навигации контроллер с видом на корневой контроллер (поддержка портретной только)ИОС 7 ориентации выпуск

[толкает ->]

Изображение контроллера представления (поддержка портрет & пейзаж)
На этом изображении показаны с помощью страницы View Controller

[затем представляет ->]

MPMovieplayer (поддержка портрет & пейзажа)

на освобождение от видеоплеер и выскакивают портретный только вид корневого контроллер он превратился в ландшафт.

Я дал их в корневой вид контроллера

-(BOOL)shouldAutorotate { 
    return NO; 
} 

-(NSUInteger)supportedInterfaceOrientations 
{ 
    return UIInterfaceOrientationMaskPortrait; 
} 

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { 
    return UIInterfaceOrientationPortrait; 
} 

мне нужен этот контроллер не будет ландшафте при любых сценариях .. я обработал ориентацию в Image View контроллера с помощью делегатов

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { 

} 


- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { 

} 

В Image контроллере представления, как этот

- (BOOL)shouldAutorotate { 
    return YES; 
} 
+0

реализовать подмножество 'UINavigationController' и представить поддержку ориентации только от реально видимого контроллера представления. первоначально «UINavigationController» не заботится о желательности ориентации на отдельные контроллеры представлений - поэтому вам нужно переопределить связанные методы в вашем подмножестве. – holex

+0

Я сделал контроллер навигации classa и положил - (NSUInteger) supportedInterfaceOrientations { return UIInterfaceOrientationMaskPortrait; } это неработало это вы упомянули ...? –

+0

он не выполняет эту работу за вас, потому что это не то, о чем я говорил. :) – holex

ответ

0

Наконец я получил это фиксируется на использование этой проверки в AppDelegate

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window { 
    // Get topmost/visible view controller 
    UIViewController *currentViewController = [self.navigationController topViewController]; 

    // Unlock landscape view orientations for this view controller 
    if([navigationController.topViewController isKindOfClass:[ImsgeViewController class]]) 
    { 
     return UIInterfaceOrientationMaskAllButUpsideDown; 
    } 
    else if([navigationController.topViewController isKindOfClass:[PageContentViewController class]]) 
    { 
     return UIInterfaceOrientationMaskAllButUpsideDown; 
    } 
    // Only allow portrait (standard behaviour) 
    return UIInterfaceOrientationMaskPortrait; 
} 
Смежные вопросы