使用带有rootViewController的第二个UIWindow时,黑屏的界面旋转

时间:2013-11-05 06:14:04

标签: ios objective-c uiviewcontroller uiwindow

(iOS 7.0.3,Xcode 5.0.1)

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

要重现:创建单视图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;

任何帮助表示感谢。

4 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:1)

根据开发论坛上的Apple工程师的说法,这是预期的,因为窗口添加了黑色背景以避免其背后的东西被看到(即通常在主窗口后面)。我打开并发布了Apple bug追踪器,#15398141。

尽管如此,我通过将窗口隐藏在willRotateToInterfaceOrientation:duration:中并将其取消隐藏在didRotateFromInterfaceOrientation:中解决了这个问题,在这种情况下,幸运的是这不是什么大问题。

答案 2 :(得分:1)

这是一个已知问题,有很多雷达可供选择。到目前为止,对我来说最好的解决方案是将视图作为子视图添加到窗口,并自己管理轮换。这很好用。

答案 3 :(得分:0)

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