iOS13 Deprecated | statusBarOrientation

スポンサーリンク
swift

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

日々修行

コメント

タイトルとURLをコピーしました