2015-07-07 2 views
0

Я хотел был бы сделать ViewController портрет и пейзаж ViewController B. Когда он работает, все идет по портрету, даже если я установил делегат приложения для изменения в качестве ландшафта. Не могли бы вы рассказать, что именно делать? Ниже мой рабочий ..App может автоматически поворачиваться в пейзаж с портрета на iPad, но не на iPhone

ViewController Едущий для просмотра контроллера B:

 AppDelegate *appDelegate = (AppDelegate *) [UIApplication sharedApplication].delegate; 
     appDelegate.restrictRotation = TRUE; 


     MapViewController * sliderVC =  [[MapViewController alloc] init ]; 

     sliderVC.modalPresentationStyle = UIModalPresentationCurrentContext; 
     [self presentViewController:sliderVC animated:NO completion:nil]; 
     sliderVC.view.backgroundColor = [UIColor clearColor]; 

AppDelegate.m

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window 
{ 
    if(self.restrictRotation)//set the bool value to view controller which you want to load in landscape 
     return UIInterfaceOrientationMaskLandscapeRight; 
    else 
     return UIInterfaceOrientationMaskPortrait; 
} 
+1

Проверить Вкладка «Общие» в целевых настройках: флажки «Ориентация устройства». Поддерживаете ли вы необходимую ориентацию? –

+0

Я сделал Портрет проверен и отмечен Пейзаж, не работает –

ответ

0

Вы должны переопределить следующие методы View Controller B:

func shouldAutorotate() -> Bool 
func supportedInterfaceOrientations() -> Int 
func preferredInterfaceOrientationForPresentation() -> UIInterfaceOrientation 

Метод, который вы переопределили в AppDelegate, предназначен для всего вашего приложения.

Reference

+0

Я пробовал, но не работает –

0

Я рекомендую вам взглянуть на соответствующую документацию.

Multiple Orientations

В основном это то, что вам нужно сделать для всех контроллеров зрения:

#pragma mark Orientation handling 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return (interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown); 
} 

-(BOOL)shouldAutorotate 
{ 
    return YES; 
} 

-(NSUInteger)supportedInterfaceOrientations 
{ 
    return (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown); 
} 
+0

Я пробовал Но напрасно. Пожалуйста, см. Это http://stackoverflow.com/questions/31244891/ios-force-landscape-in-one-viewcontroller –

1

Убедитесь, что вы поддерживаете разыскиваемую ориентацию:

Project> Target> Общие

enter image description here

+0

Я отметил все это, но безрезультатно –

Смежные вопросы