Frage

HALLO dort,

Ich versuche UIScreen zu verwenden, um einen separaten Bildschirm mit dem VGA-Dongle auf meinem iPad zu fahren.

Hier ist, was ich in meiner Stammansicht Controller viewDidLoad habe:

//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;
 }
War es hilfreich?

Lösung

Sie benötigen Fenster init ...

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

Andere Tipps

[newwindow makeKeyAndVisible];?

Ich denke, das Problem der externalDisplay ist. Erstellen Sie ein Viewcontroller außerhalb der Code (vielleicht tun ein einfach neue Datei hinzufügen Viewcontroller und Put-Sachen in der .xib) und versuchen Sie es, um sicherzustellen, dass Viewcontroller funktioniert, bevor Sie es in das externe Display aufrufen. Hier ist der Code mit meinen vorgeschlagenen Änderungen -. [Mainviewcontroller Ansicht] wird der Viewcontroller Sie außerhalb erstellt

//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];
}

Just Aufnahme dieses hier falls jemand stolpert auf diese Frage. Ich war nicht in der Lage zu bekommen, alles auf dem zweiten Bildschirm angezeigt werden, bis ich erkennen, dass mein AppDelegate die UIWindow zu behalten hatte. Es hat keinen natürlichen Eigentümer, also wenn Sie nur eine regelmäßige Autofreigabe tun, wird das Fenster, bevor sie überhaupt angezeigt freigegeben werden.

Ich hoffe, das hilft.

habe ich Probe Xcodeproj in Github hochgeladen.

I verwiesen vor allem auf dieser Seite.

Vielen Dank. :)

http://github.com/igaiga/iPadDisplayOutSample

Es muss erwähnt werden, dass der Code auf dieser Seite zur Verfügung gestellt und auf dem GitHub Link von igaiga lediglich zu „bewegen“ gemeint ist (NICHT CLONT) die Ansicht, die normalerweise auf dem iPad sein würden (oder ein anderes Gerät).

Wenn Sie klonen müssen (aka Mirror) die Ansicht und aktualisieren ihre Inhalte dieser Link ist besser geeignet: http://www.touchcentric.com/blog/archives/123

Ich hoffe, dass dies die Anwendungsfälle für beide Sätze von Code für die Nutzer zu klären hilft nur Video-Out-Funktionen in bestehende Anwendungen zu integrieren beginnen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top