在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。 在我的情况下,它解决了这个问题。