当我创建一个新的UIWindow时,iPad airplay显示会显示黑屏

时间:2016-02-08 12:41:48

标签: ios iphone ipad airplay mirroring

[编辑] 我重新启动了iPad,它解决了这个问题。我将它留在这里,因为堆栈溢出不鼓励删除问题

我在iPad Air 2上发生了一件奇怪的事情。使用https://developer.apple.com/library/ios/documentation/WindowsViews/Conceptual/WindowAndScreenGuide/UsingExternalDisplay/UsingExternalDisplay.html

中提到的方法

我为通过AirPlay连接的辅助显示器创建了一个新的UIWindow对象。

- (void)checkForExistingScreenAndInitializeIfPresent {
   if ([[UIScreen screens] count] > 1)
   {
    // Get the screen object that represents the external display.
    UIScreen *secondScreen = [[UIScreen screens] objectAtIndex:1];
    // Get the screen's bounds so that you can create a window of the correct size.
    CGRect screenBounds = secondScreen.bounds;

    self.secondWindow = [[UIWindow alloc] initWithFrame:screenBounds];
    self.secondWindow.screen = secondScreen;

    NSLog(@"Show external window");
    // Set up initial content to display...
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Test" bundle:[NSBundle mainBundle]];
    UIViewController *controller = [storyboard instantiateInitialViewController];
    self.secondWindow.rootViewController = controller;
    // Show the window.
    self.secondWindow.hidden = NO;
   }

}

当我在iPhone 5s上运行此代码时,代码完美运行并初始化辅助窗口。但是,当我从iPad Air 2上的Xcode运行此代码时,我只看到黑屏。如果应用程序未通过Xcode运行,则应用程序将在iPad上启动,但在AirPlay显示屏上,它仅显示主屏幕,并突出显示应用程序图标。音频仍然通过AirPlay路由。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

通常我们会改变我们的UIWindow颜色:

[UIApplication sharedApplication].keyWindow.backgroundColor = [UIColor myColor];

您可以将self.secondWindow颜色设置为:

secondWindow.backgroundColor = [UIColor whiteColor];

答案 1 :(得分:1)

这是一个荒谬的案例,解决方案同样荒谬。我重新启动了iPad,问题就消失了。