2012-02-07 2 views
2

Je veux juste afficher en plein écran sur l'affichage externe.Afficher en plein écran sur l'affichage externe pour iOS

J'utilise le code comme ceci:

- (void) startTvOut { 
    NSArray *screens = [UIScreen screens]; 

    CGSize max; 
    max.width = 0; 
    max.height = 0; 
    UIScreenMode *maxScreenMode = nil; 
    for (UIScreen *screen in screens) 
    { 

     if (screen != [UIScreen mainScreen]) 
     { 
      for(int i = 0; i < [[screen availableModes] count]; i++) 
      { 
       UIScreenMode *current = [[screen availableModes] objectAtIndex: i]; 
       if (current.size.width > max.width) 
       { 
        max = current.size; 
        maxScreenMode = current; 
       } 
      } 
      if (exWindow == nil) 
      { 
       exWindow = [[HUWindow alloc] initWithFrame:screen.brounds]; 
       exWindow.backgroundColor = [UIColor whiteColor]; 
      } 
      screen.overscanCompensation = UIScreenOverscanCompensationInsetBounds; 
      screen.currentMode = screen.preferredMode; 
      exWindow.screen = screen; 

      [exWindow makeKeyAndVisible]; 
      m_isStarted = YES; 
     } 
    } 
} 

Il ne peut pas afficher en plein écran sur un périphérique externe.

Après que je change le code de screen.overscanCompensation = UIScreenOverscanCompensationInsetBounds; à screen.overscanCompensation = UIScreenOverscanCompensationInsetApplicationFrame; il peut montrer en plein écran, mais le point (0,0) est pas en haut de l'écran gauche.

Mon objectif est de montrer l'écran en plein écran et d'avoir le point (0, 0) dans le coin supérieur gauche de l'écran. Mais ça ne marche pas.

Merci à l'avance

Répondre

6

Modifier cette ligne:

screen.overscanCompensation = UIScreenOverscanCompensationInsetBounds; 

à

screen.overscanCompensation = 3; 

Il est une valeur non documentée ...

+0

Cela a fonctionné dans iOS 9, mais n » t plus de iOS 10 – tmm1

+0

bien que ce soit la meilleure solution, j'ai remarqué que l'utilisation de cette valeur de 3 d ne garantit pas que l'écran sera rempli. Parfois oui, parfois non. Très étrange. – horseshoe7

Questions connexes