お世話になります。
主題の件、デバイスの画面回転時に各Viewのサイズを変更するようにしています。
画面回転の検知ではNSNotification.Name.UIDeviceOrientationDidChangeを使用してUIApplication.shared.statusBarOrientationを取得して縦向きか横向きかを確認しているのですが、iPhoneとiPadで挙動が真逆になります。
■環境
・Xcode9.2
・swift4
・iPhoneシミュレータ、iPadシミュレータ
・GeneralのDeviceOrientationはPortrait/UpsideDown/LandscapeLeft/LandscapeRight共にチェック済み
swift
1override func viewDidLoad() { 2 super.viewDidLoad() 3 4 // ■ 画面向きの検知. 5 NotificationCenter.default.addObserver(self, selector: #selector(self.onOrientationChange_(notification:)), name: NSNotification.Name.UIDeviceOrientationDidChange, object: nil) 6} 7 8// 端末の向きがかわったら呼び出される. 9@objc private func onOrientationChange_(notification: NSNotification){ 10 let deviceOrientation: UIInterfaceOrientation! = UIApplication.shared.statusBarOrientation 11 print("isPortrait:(deviceOrientation.isPortrait) isLandscape:(deviceOrientation.isLandscape)") 12}
■ 現象
・iPhone
縦向き(ホームボタンが上下)
deviceOrientation.isPortrait = true, deviceOrientation.isLandscape = false
横向き(ホーム画面が左右)
deviceOrientation.isPortrait = false, deviceOrientation.isLandscape = true
→ 問題ありません。
・iPad
縦向き(ホームボタンが上下)
deviceOrientation.isPortrait = false, deviceOrientation.isLandscape = true
横向き(ホーム画面が左右)
deviceOrientation.isPortrait = true, deviceOrientation.isLandscape = false
→ iPhoneの挙動と真逆になる。
なお、viewDidLoadが呼ばれた際にiPadの挙動を確認したところ、iPhoneと同じで問題ありませんでした。
回転検知時のみなぜか値が逆になります。
iPadで回転向き確認する場合はiPhoneの挙動の逆で判定しなければいけないのでしょうか?また画面サイズの向きを確認しなければいけないのでしょうか?
すみませんがご教示お願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/24 01:44