2014-02-26 2 views
8

Я использую кабель HDMI для вывода вывода экрана iPad на телевизор. Если я сохраню iPad в ландшафтном режиме, вывод на экране телевизора в ландшафтном режиме. и если я поворачиваю его на портретный вывод на телевизоре, то также меняется и портретный режим.Как заставить телевизор из iPad находиться в ландшафтном режиме, даже если iPad находится в портретном режиме.

Есть ли способ ограничить этот т.е. даже если я повернуть IPad в портретной ориентации выход на ТВ должен оставаться в ландшафтном

Вот некоторые изображения, которые прояснят мой вопрос

это мой IPad-х ориентация ...

enter image description here

Это то, что я получаю .........

enter image description here

Это то, что я хочу ......

enter image description here ИЛИ enter image description here

От возни с программированием я пришел далеко ..

Я сделал кнопку над UIImageView с некоторым изображением в одном шаблоне приложения вида Xcode с методом IBaction этот метод имеет следующий код

- (IBAction)screenButton:(id)sender { 
NSLog(@"Screen Count %d",[[UIScreen screens]count]); 
if([[UIScreen screens]count] > 1) { 

    CGSize max; 

    UIScreenMode *maxScreenMode; 

    for(int i = 0; i < [[[[UIScreen screens] objectAtIndex:1] availableModes]count]; i++) 

    { 

     UIScreenMode *current = [[[[UIScreen screens]objectAtIndex:1]availableModes]objectAtIndex:i]; 

     if(current.size.width > max.width) 

     { 
      max = current.size; 

      maxScreenMode = current; 

     } 

    } 

    //UIScreen *external = [[UIScreen screens] objectAtIndex:0]; 

    UIScreen *external = [[UIScreen screens] objectAtIndex:1]; 

    external.currentMode = maxScreenMode; 



    //external_disp = [externalDisplay alloc]; 

    //external_disp.drawImage = drawViewController.drawImage; 

    // ExternalDisplayOn = TRUE; 
    //UIImageView *extView = [[UIImageView alloc] init]; 

    _extView.hidden=FALSE; 

    _extView.frame = external.bounds;//MyMainScrollView.frame; 

      UIWindow *newwindow = [[UIWindow alloc] initWithFrame:_extView.frame]; 

    //UIWindow *newwindow = [[UIWindow alloc]; 

      [newwindow addSubview:_extView]; 

      newwindow.screen = external; 

      newwindow.hidden=NO; 


    [[[UIAlertView alloc] initWithTitle:@"Alert Showed" message:[NSString stringWithFormat:@"_extView.frame X %f, Y %f, W %f, H %f, Screen Count %d",_extView.frame.origin.x,_extView.frame.origin.y,_extView.frame.size.width,_extView.frame.size.height,[[UIScreen screens]count]] delegate:nil cancelButtonTitle:@"OK!" otherButtonTitles:nil, nil] show]; 


      [newwindow makeKeyAndVisible]; 

    } 

} 

я был в состоянии решить мою проблему, в некоторой степени, но проблема я столкнулся, как следующий

всякий раз, когда я запустить приложение и сохранить его в портретном режиме, выход на ТВ является точной копией моего экрана iPad.

теперь, когда я нажимаю UIButton, который я присвоил вышеприведенному коду. UIAlertView отображается на экране iPad (но не на экране телевизора). и ориентация на телевизоре меняется на «Пейзаж» с моим iPad в режиме «Портрет» (на самом деле это именно то, что я действительно хотел) ....

, но когда я нажимаю кнопку отмены UIalertView, чтобы закрыть вид предупреждения. ориентация на выходе телевизора снова меняется в портретный режим.

Есть ли способ предотвратить то, что происходит в моем случае, когда появляется UIAlertView. это решило бы проблему.

+0

Вы назначаете один и тот же вид обоим окнам или есть два разных экземпляра одного и того же вида? – cescofry

ответ

1

Я не знаю, помогает ли моя идея, или вы уже настроили программу таким образом.

В инспекторе projekt вы можете заставить вас iPad находиться в определенной ориентации. Тогда ваше приложение работает только в этой ориентации.

Помогает ли это?

1

Вы можете попробовать установить 90 градусов преобразования на просмотр и изменение его границ в пределах экрана, но с компонентами размера местами.

Что-то вроде:

CGRect screenBounds = external.bounds; 
_extView.transform = CGAffineTransformMakeRotation((CGFloat)M_PI_2); 
_extView.bounds = CGRectMake(0,0,screenBounds.size.height, screenBounds.size.width); 
1

Вы можете установить приложения ориентации, как вам нравится с помощью делегата приложения.

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window 
{ 
NSLog(@"Interface orientation Portrait = %@",enablePortrait); 
if(wantAppliactionTobeLandscape) 
    return UIInterfaceOrientationMaskLandscapeRight; 

else 
    return UIInterfaceOrientationMaskPortrait; 
} 

сделать bool соответствующим образом и установить его по мере необходимости.

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