Question

Bonjour,

Je suis en train d'utiliser UIScreen pour piloter un écran séparé avec le dongle VGA sur mon iPad.

Voici ce que j'ai dans mon viewDidLoad contrôleur de vue racine:

//Code to detect if an external display is connected to the iPad.
 NSLog(@"Number of screens: %d", [[UIScreen screens]count]);

 //Now, if there's an external screen, we need to find its modes, itereate through them and find the highest one. Once we have that mode, break out, and set the UIWindow.

 if([[UIScreen screens]count] > 1) //if there are more than 1 screens connected to the device
 {
  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;
   }
  }
  //Now we have the highest mode. Turn the external display to use that mode.
  UIScreen *external = [[UIScreen screens] objectAtIndex:1];
  external.currentMode = maxScreenMode;
  //Boom! Now the external display is set to the proper mode. We need to now set the screen of a new UIWindow to the external screen
  external_disp = [externalDisplay alloc];
  external_disp.drawImage = drawViewController.drawImage;
  UIWindow *newwindow = [UIWindow alloc];
  [newwindow addSubview:external_disp.view];
  newwindow.screen = external;
 }
Était-ce utile?

La solution

Vous devez initialiser la fenêtre ...

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

Autres conseils

[newwindow makeKeyAndVisible];?

Je pense que votre problème est le externalDisplay. Créer un viewcontroller en dehors de votre code (faire peut-être un nouveau fichier Ajouter simplement ViewController et d'autres choses mis dans le .xib) et l'essayer pour vous assurer que viewcontroller travaille avant d'appeler dans l'écran externe. Voici votre code avec mes modifications proposées -. [Vue mainViewController] est la viewcontroller vous avez créé à l'extérieur

//Code to detect if an external display is connected to the iPad.
NSLog(@"Number of screens: %d", [[UIScreen screens]count]);

//Now, if there's an external screen, we need to find its modes, iterate
//through them and find the highest one. Once we have that mode, break out,
//and set the UIWindow.

if([[UIScreen screens]count] > 1) //if there are more than 1 screens connected
                                  //to the device
{
 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;
  }
 }
 //Now we have the highest mode. Turn the external display to use that mode.
 UIScreen *external = [[UIScreen screens] objectAtIndex:1];
 external.currentMode = maxScreenMode;
 //Boom! Now the external display is set to the proper mode. We need to now
 //set the screen of a new UIWindow to the external screen

 UIWindow *newwindow = [UIWindow alloc];

 [newwindow addSubview:[mainViewController view]];
 newwindow.screen = external;

 [newwindow makeKeyAndVisible];
 [newwindow setHidden:NO];
}

Il suffit de l'enregistrement de ce ici au cas où quelqu'un trébuche sur cette question. Je n'étais pas en mesure d'obtenir quoi que ce soit de se présenter sur le deuxième écran jusqu'à ce que je compris que mon délégué application devait conserver le UIWindow. Il n'a pas de propriétaire naturel, donc si vous faites juste un autorelease régulier, la fenêtre sera publié avant qu'il ne jamais affiche.

L'espoir qui aide.

Je l'ai téléchargé échantillon .xcodeproj dans github.

Je refered à cette page principalement.

Merci beaucoup. :)

http://github.com/igaiga/iPadDisplayOutSample

Il convient de mentionner que le code fourni sur cette page et sur le lien github par igaiga est simplement destinée à « déplacer » (PAS CLONE) le point de vue qui serait normalement sur l'iPad (ou autre appareil).

Si vous avez besoin de clone (aka Mirror) la vue et actualiser son contenu ce lien est plus approprié: http://www.touchcentric.com/blog/archives/123

J'espère que cela aide à clarifier les cas d'utilisation pour les deux ensembles de code pour les utilisateurs tout juste à intégrer de la vidéo sur les capacités dans les applications existantes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top