2013-11-20 5 views
0

Я делаю приложение, которое находится только в портретном режиме. Но в нем есть графический вид, и мне нужен вид графика в обоих направлениях: Портрет и Пейзаж. Я пробовал много методов, заданных на разных постах, но я не могу его повернуть. Я использую IOS 6. Любая помощь будет оценена ...Вращение одного вида в портретном приложении

ответ

1

Мое приложение также поддерживает только портретную ориентацию, но для одного взгляда Я предоставляю портрет, а также пейзажную ориентацию.

Вам нужно будет открыть слой вида и повернуть его вручную. Добавьте следующий код и вызвать его от ориентации метод делегата - (void) didRotate:(NSNotification *)notification

Вот код ..

- (void) rotateViewToOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    CALayer *viewLayer = // assign view layer here. 

    switch (interfaceOrientation) 
    { 
     case UIInterfaceOrientationPortrait: 
     { 
      viewLayer.transform = CATransform3DMakeRotation(0, 0.0, 0.0, 1.0); 
      break; 
     } 
     case UIInterfaceOrientationPortraitUpsideDown: 
     { 
      viewLayer.transform = CATransform3DMakeRotation(180.0/180.0 * M_PI, 0.0, 0.0, 1.0); 
      break; 
     } 
     case UIInterfaceOrientationLandscapeLeft: 
     { 
      viewLayer.transform = CATransform3DMakeRotation(90.0/180.0 * M_PI, 0.0, 0.0, 1.0); 

      break; 
     } 
     case UIInterfaceOrientationLandscapeRight: 
     { 
      viewLayer.transform = CATransform3DMakeRotation(270.0/180.0 * M_PI, 0.0, 0.0, 1.0); 
      break; 
     } 

     default: 
      break; 
    } 
} 

Набор кадров в соответствии с требованием после преобразования.

0

Во-первых, ваши целевые установки должны выглядеть следующим образом:

Supported Interface Orientations

В UITabBarController:

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    // You do not need this method if you are not supporting earlier iOS Versions 
    return [self.selectedViewController shouldAutorotateToInterfaceOrientation:interfaceOrientation]; 
} 

-(NSUInteger)supportedInterfaceOrientations 
{ 
    if (self.selectedViewController) 
    return [self.selectedViewController supportedInterfaceOrientations]; 

    return UIInterfaceOrientationMaskPortrait; 
} 

-(BOOL)shouldAutorotate 
{ 
    return YES; 
} 

Внутри вашего ViewController :

a) если вы не хотите вращать:

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

- (BOOL)shouldAutorotate 
{ 
    return NO; 
} 

- (NSUInteger)supportedInterfaceOrientations 
{ 
    return UIInterfaceOrientationMaskPortrait; 
} 

б) если вы хотите повернуть в пейзаж:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return YES; 
} 

- (BOOL)shouldAutorotate 
{ 
     return YES; 
} 

- (NSInteger)supportedInterfaceOrientations 
{ 
     return UIInterfaceOrientationMaskAllButUpsideDown; 
} 

Другое решение заключается в реализации этого метода внутри AppDelegate:

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window 
{ 
     NSUInteger orientations = UIInterfaceOrientationMaskAll; 

    if (self.window.rootViewController) { 
     UIViewController* presented = [[(UINavigationController *)self.window.rootViewController viewControllers] lastObject]; 
     orientations = [presented supportedInterfaceOrientations]; 
    } 

    return orientations; 
} 
+0

Я не использую контроллер таблеток ... – Atul

+0

, и у меня есть только портрет в настройках – Atul

+0

ok thwn также попробуйте с кодом выше –

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