あまのじゃくなHIKARU APPです。
今年のiOS13は、バグたん多すぎで泣きべそ中。そんな中、iOS13 DeprecatedになったAPIを見ていると、Appleの次の一手が見えてくる様で見えてこない様な・・・。
ま、とりあえず、バグたんに負けずに上を向いて歩こう!
interfaceOrientation
今回のDeprecated APIは、statusBarOrientationで端末の向きを取得するもの
これがinterfaceOrientationに置き換わった。
取得できる値は、変わらないので、取得する部分だけ置き換えれば、その後のコードはそのまま流用できる。
Swift
let ifOrientation = { () -> UIInterfaceOrientation in if #available(iOS 13, *) { return self.view.window?.windowScene?.interfaceOrientation ?? .unknown } return UIApplication.shared.statusBarOrientation } switch ifOrientation() { case .unknown: print("unknown") case .portrait: print("portrait") case .portraitUpsideDown: print("portraitUpsideDown") case .landscapeLeft: print("landscapeLeft") case .landscapeRight: print("landscapeRight") @unknown default: break }
Objective-C
UIInterfaceOrientation (^ifOrientation)(void) = ^(){ if (@available(iOS 13, *)) { return [self.view.window.windowScene interfaceOrientation]; } return [[UIApplication sharedApplication] statusBarOrientation]; }; switch (ifOrientation()) { case UIInterfaceOrientationUnknown: NSLog(@"UIInterfaceOrientationUnknown"); break; case UIInterfaceOrientationPortrait: NSLog(@"UIInterfaceOrientationPortrait"); break; case UIInterfaceOrientationPortraitUpsideDown: NSLog(@"UIInterfaceOrientationPortraitUpsideDown"); break; case UIInterfaceOrientationLandscapeLeft: NSLog(@"UIInterfaceOrientationLandscapeLeft"); break; case UIInterfaceOrientationLandscapeRight: NSLog(@"UIInterfaceOrientationLandscapeRight"); break; default: break; }
取得部分は、closure(Block)でまとめてみました。
どの方法であってもinterfaceOrientationにたどり着けば良いわけで、今回は、他とは違った方法で辿ってみました(笑)
日々修行
コメント