酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

SwiftでToday Extensionのデバイスの向きを判定する

少し前のエントリ「SwiftでToday Extensionの高さをUITableViewの高さに合わせる」で、Widgetの高さの上限値は「アプリ名のセクションを含めてWidgetが1画面で収まる高さ」と書いておきながら、デバイスを横にした時の処理を忘れていました。

下図は、現在開発中のikatomo(SplatFriends)です。iPhone 4sでも綺麗に現在のステージ情報が画像付きで表示されるように調整しています。

f:id:ch3cooh393:20160124210153p:plain

デバイスを横向きにした状態で画像を表示すると、ガチマッチと次のステージ情報が欠けてしまっています。

f:id:ch3cooh393:20160124210159p:plain

Today ExtensionだけではなくAppExtensionでは、UIApplicationクラス・UIDeviceクラスを使用することができません。デバイスの傾きを取得するためにはUIViewのサイズを比較して現在の向きが縦か横かを決めます。

private func isLandscape() -> Bool {
    return self.view.bounds.width > self.view.bounds.height
}

ikatomoではデバイスを横向きにしたときには画像を表示せずにテキストだけを表示するようにしたいと思います。

f:id:ch3cooh393:20160124210205p:plain

とりあえずはこれでお茶を濁します……

関連記事

この他にもiOSアプリ開発で見つけたネタや悩んだ内容など紹介しています。Tipsをまとめておりますのでこちらのページをご参照ください。