在rootViewController中使用第二个UIWindow时,会导致界面旋转变黑

(iOS 7.0.3,Xcode 5.0.1)

我的应用程序中有第二个UIWindow用于在状态栏上方显示自定义放大镜。 但是,一旦我设置了这个窗口的rootViewController(用于界面旋转和一些其他的东西),主界面在界面旋转animation过程中变黑。

要重现:创build单个视图的iOS应用程序,并将以下添加到主UIViewController。

// To @interface: @property (nonatomic, strong) UIWindow *secondWindow; // In viewDidLoad: self.secondWindow = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; self.secondWindow.rootViewController = [[UIViewController alloc] initWithNibName:nil bundle:nil]; self.secondWindow.hidden = NO; 

任何帮助赞赏。

我将添加另一个答案,因为我find了一个实际工作的解决方法。 将窗口的背景颜色以及视图控制器视图的背景颜色设置为alpha值为0的颜色。不要使用clearColor ,而应使用类似于greenColor] colorWithAlphaComponent:0.0]; 有用。

据开发论坛上的苹果工程师介绍,这是由于窗口添加了黑色的背景,以避免背后的东西被看到(即通常在主窗口后面)。 我打开并发布了Apple错误跟踪器,#15398141。

不过,我通过在willRotateToInterfaceOrientation:duration:隐藏窗口解决了这个问题willRotateToInterfaceOrientation:duration:并且在didRotateFromInterfaceOrientation:didRotateFromInterfaceOrientation:在这种情况下幸运的是没有什么大不了的。

这是一个已知的问题,有许多雷达可以使用。 到目前为止,我最好的解决scheme是将视图添加为窗口的子视图,并自行pipe理旋转。 这很好。

Make window.opaque = No其默认值是YES。 在我的情况下,它解决了这个问题。