Используя UISCREEN, чтобы управлять VGA-дисплеем - не отображает Uiwindow?

StackOverflow https://stackoverflow.com/questions/2660473

Вопрос

Всем привет,

Я пытаюсь использовать UISCreen, чтобы водить отдельный экран с VGA-ключ на моем iPad.

Вот что я получил в моем Root View ViewDload контроллера:

//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;
 }
Это было полезно?

Решение

Вам нужно инимировать ваше окно ...

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

Другие советы

[newwindow makeKeyAndVisible];?

Я думаю, что ваша проблема - ExternalDisplay. Создайте ViewController за пределами вашего кода (возможно сделать просто добавить новый ViewController файл и поместите материал в .xib) и попробуйте убедиться, что ViewController работает, прежде чем вызовать его на внешний дисплей. Вот ваш код с моими предложенными изменениями - [MainViewController View] - это контроль контроллера, который вы создали снаружи.

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

Просто записываю это здесь, если кто-нибудь споткнулся на этот вопрос. Я не смог получить что-то, чтобы показать на втором экране, пока не понял, что мой прикладной делегат должен был сохранить Uiwindow. Он не имеет естественного владельца, поэтому, если вы просто сделаете регулярную авторелецию, окно будет выпущено до того, как он когда-либо отобразится.

Надеюсь, это поможет.

Я загрузил образец .xCodeProj в github.

Я сослался на эту страницу в основном.

Большое спасибо. :)

http://github.com/igaiga/ipaddisplayoutsample.

Необходимо отметить, что код, предусмотренный на этой странице, и на канате GitHub Igaiga просто предназначен для «перемещения» (не клона) представления, который обычно будет на iPad (или другом устройстве).

Если вам нужно клонировать (aka mirror), представление и обновление его содержимого, эта ссылка более подходит: http://www.touchcentric.com/blog/Чахивы/123.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top