iOS UIDeviceの向きを検出する
2023-10-07 08:27:02
質問
デバイスが縦向きになったことを検知して、特別なアニメーションを起動する必要があります。しかし、私はビューを自動回転させたくありません。
デバイスが縦向きに回転したときに自動回転するビューを無効にするにはどうしたらよいですか。私のアプリはビューを横向きに表示する必要があるだけですが、縦向きへの回転を検出できるようにしたい場合は、縦向きもサポートする必要があるようです。
どのように解決するのですか?
アプリケーションのロード時、またはビューのロード時に以下の操作を行ってみてください。
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter]
addObserver:self selector:@selector(orientationChanged:)
name:UIDeviceOrientationDidChangeNotification
object:[UIDevice currentDevice]];
次に、以下のメソッドを追加します。
- (void) orientationChanged:(NSNotification *)note
{
UIDevice * device = note.object;
switch(device.orientation)
{
case UIDeviceOrientationPortrait:
/* start special animation */
break;
case UIDeviceOrientationPortraitUpsideDown:
/* start special animation */
break;
default:
break;
};
}
上記により、ビューの自動回転を有効にすることなく、デバイスの方向変更に対応した登録が可能になります。
備考
iOS のすべての場合において、observe を追加したときは、適切なタイミングでそれを削除してください(おそらく、常にではありませんが、ビューが表示/非表示になったとき)。observorとunobserveのコードはquot;pairs"しか持つことができません。これを行わないと、アプリはクラッシュします。観察/非観察の場所を選択することは、このQAの範囲外です。しかし、上記の "observe "と "unobserve "は必ず一致させなければなりません。
関連
-
[解決済み] iOSのバージョンを確認する方法を教えてください。
-
[解決済み] Xcode 6のバグ:Interface Builderファイル内の不明なクラス
-
[解決済み] UIDevice uniqueIdentifierは非推奨 - どうしたらいいの?
-
[解決済み] iPhone 5の画面解像度に対応したアプリを開発・移行するには?
-
[解決済み] 16進カラーバリューの使用方法
-
[解決済み] UITableView - トップにスクロールする
-
[解決済み] iOS 8でビューコントローラの向きを強制的に変更するには?
-
[解決済み] Swiftで1つのビューコントローラの向きを縦向きのみに固定する方法
-
[解決済み] Swift - 方向の変化を検出する方法
-
[解決済み] iPhoneの向きを設定する方法はありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
IOS8 Development Guide Error Thread 1: signal SIGABRT
-
[解決済み] iOSのステータスバーの文字色を変更する方法
-
[解決済み] フレームワークを使用したiOSアプリがデバイス上でクラッシュ、dyld: ライブラリがロードされない、Xcode 6 Beta
-
[解決済み] UITextViewのサイズをコンテンツに合わせるには?
-
[解決済み] UINavigationBarの1px下の行を非表示にする方法
-
[解決済み] コードサインエラーです。期限切れのプロファイルを削除した後、プロビジョニングプロファイルが見つからない
-
[解決済み] iPhone 5の画面解像度に対応したアプリを開発・移行するには?
-
[解決済み] Swiftの配列を文字列に変換するには?
-
[解決済み] Swift 3でディスパッチキューを作成する方法
-
[解決済み] Rotationメソッドは非推奨、'didRotateFromInterfaceOrientation'と同等?