2013-11-05 5 views
6

(iOSの7.0.3、Xcodeの5.0.1)ブラックアウトインターフェース回転rootViewController

を有する第二UIWindowを使用したとき、私は私のアプリで二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; 

助けてください。

答えて

5

私は別の答えを追加します。実際には回避策が見つかっています。ウィンドウの背景色と、ビューコントローラーのビューの背景色をアルファ0の色に設定します。clearColorを使用せず、greenColor] colorWithAlphaComponent:0.0];のようなものを使用します。

+0

clearColorはiOS 8でもうまく動作します。 – Andy

+0

@Andy私の経験ではありません。ビューコントローラのビューに 'clearColor'バックグラウンドビューがある場合、回転すると背景が黒くなります。 –

+2

私は何も(nil)とUIWindow.backgroundColor = clearColorに設定されていないrootViewController.view.backgroundColorを持っています。すべての良い。 – Andy

1

デベロッパーフォーラムのAppleエンジニアによると、これは、ウィンドウの背後にあるものが見えないように(つまりメインウィンドウの背後に)、黒の背景が追加されているために発生します。 Appleのバグトラッカーを開いて問題を報告しました。#15398141

しかし、私はwillRotateToInterfaceOrientation:duration:にウィンドウを隠し、didRotateFromInterfaceOrientation:に隠すことでこの問題を解決しました。これは幸運なことではありません。

1

これは既知の問題で、多数のレーダーが公開されています。今までの私のベストソリューションは、ビューをサブビューとしてウィンドウに追加し、自分でローテーションを管理することです。これはうまくいく。

+1

これも良いアプローチです。また、iOS 7のUIViewControllerベースのステータスバーの外観は、(rootViewControllerが設定されていなくても)2番目のUIWindowを照会するため、使用できないことに注意してください。 –

0

window.opaque = Noをデフォルト値のYESにします。私の場合、それは問題を解決しました。