
あまのじゃくな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にたどり着けば良いわけで、今回は、他とは違った方法で辿ってみました(笑)
日々修行


コメント