2016-06-15 3 views
0

(実際のデバイスとシミュレータで)、私は姿勢変更通知後[UIScreen mainScreen].boundsについて(デバイスとシミュレータ間の)一貫性のない情報を取得しています。オリエンテーションを変更した後、iPhoneとiPadの画面の大きさに不一致があると思いますか? iOSの9.3 iPhoneやiPad上で

私のビューコントローラは、オリエンテーションのための通知が変化したときに追加のビューのロード:

[[NSNotificationCenter defaultCenter] 
addObserver:self 
selector:@selector(deviceOrientationDidChangeNotification:) 
name:UIDeviceOrientationDidChangeNotification 
object:nil]; 

向きは以下の通りである。変更の挙動:後に、iPhone上でこれを実行する

- (void) deviceOrientationDidChangeNotification:(NSNotification *) notification { 
    CGRect frame = [UIScreen mainScreen].bounds; 
    NSLog(@"Main screen is w=%f h=%f", frame.size.width, frame.size.height); 
} 

向きが変わると、ログメッセージはポストの方向変更画面の寸法に対応するフレームの幅と高さを示します。

iPadでこれを実行すると、向きが変更された後、の方向変更画面の寸法に対応するフレームの幅と高さがログメッセージに表示されます。

は周りコード化する必要が矛盾何かのこの種のですか?私は向きが(風景や肖像画)何かを検出しようとすることができますし、幅と高さの値を使用して意味があるが、それはかなりハッキーです。

+0

(http://stackoverflow.com/questions/26069874/what-is-the-right-way-to-handle-orientation-changes- [このSO答えます]インIOS-8計算された上/ 27409619#27409619)であるが、画面が縦向きに回転するとき、デバイスは、それがランドスケープであり、画面が横長の向きに回転するとき、デバイスは、それがポートレートであると考えて考えています。 –

答えて

0

これを処理するための正しい方法は、代わりに 使用して、通知システムを回避することである - (無効)viewWillTransitionToSize:(CGSize)サイズwithTransitionCoordinator:(ID)コーディネーターにあなたが適応したいのUIViewControllerに

方法を向き変更のUI。私が提案し `UIView`カテゴリを使用してみましたが

関連する問題