6

(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

4 回答 4

6

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

于 2014-12-02T23:05:26.473 回答
1

根据开发论坛上的一位苹果工程师的说法,这是可以预料的,因为窗口添加了黑色背景以避免看到它后面的东西(即通常在主窗口后面)。我打开并发布了 Apple 错误跟踪器,#15398141。

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

于 2013-11-05T22:43:50.217 回答
1

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

于 2013-11-05T22:46:42.683 回答
0

makewindow.opaque = No的默认值为 YES。就我而言,它解决了问题。

于 2016-07-15T15:24:34.887 回答