[解決済み] iOS 8でビューコントローラの向きを強制的に変更するには?
質問
iOS 8以前は、以下のコードに サポートされるインターフェイスの方向性 と べき乗 デリゲートメソッドを使用すると、アプリの向きを強制的に特定の向きに変更することができます。以下のコードを使って、プログラムでアプリを好きな向きに回転させることができます。まず、ステータスバーの向きを変えています。そして、モーダルビューを表示し、すぐに解除することで、ビューを希望の方向に回転させています。
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight animated:YES];
UIViewController *c = [[UIViewController alloc]init];
[self presentViewController:vc animated:NO completion:nil];
[self dismissViewControllerAnimated:NO completion:nil];
しかし、これはiOS 8で失敗しています。また、stack overflowでいくつかの回答を見ましたが、iOS 8以降では常にこの方法を避けるべきであると示唆されています。
具体的に言うと、私のアプリケーションはユニバーサルタイプのアプリケーションです。全部で3つのコントローラがあります。
-
最初のViewコントローラ - iPadでは全ての向きに、iPhoneでは縦向き(ホームボタンが下)のみに対応する必要があります。
-
2つ目のビューコントローラ - すべての条件下で、ランドスケープライトのみをサポートする必要があります。
-
第3のビューコントローラ - すべての条件下で、ランドスケープライトのみをサポートする必要があります。
ページナビゲーションにナビゲーションコントローラーを使用しています。最初のビューコントローラーから、ボタンをクリックするアクションで、2番目のビューコントローラーをスタックにプッシュしています。そのため、2つ目のビューコントローラーが到着すると、デバイスの向きに関係なく、アプリは右方向にのみロックされるはずです。
以下は、私の
shouldAutorotate
と
supportedInterfaceOrientations
メソッドを、2番目と3番目のビューコントローラに追加します。
-(NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskLandscapeRight;
}
-(BOOL)shouldAutorotate {
return NO;
}
これに対する解決策、またはiOS 8でビューコントローラを特定の方向にロックする良い方法はありますか?助けてください!
解決方法は?
iOS 7 - 10の場合。
Objective-Cです。
[[UIDevice currentDevice] setValue:@(UIInterfaceOrientationLandscapeLeft) forKey:@"orientation"];
[UINavigationController attemptRotationToDeviceOrientation];
Swift 3:
let value = UIInterfaceOrientation.landscapeLeft.rawValue
UIDevice.current.setValue(value, forKey: "orientation")
UINavigationController.attemptRotationToDeviceOrientation()
で呼び出すだけです。
- viewDidAppear:
を使用します。
関連
-
JenkinsがIOSを自動パッケージングしてモミを配布
-
[解決済み] Objective-Cで、ある文字列が他の文字列を含んでいるかどうかを調べるにはどうすればよいですか?
-
[解決済み] iOSのバージョンを確認する方法を教えてください。
-
[解決済み] Xcode 7のエラーです。"Missing iOS Distribution signing identity for ..." (iOS配布用署名IDがありません)
-
[解決済み] Xcodeにおけるバージョンとビルドの比較
-
[解決済み] Objective-CでNSNotificationCenterを通してメッセージを送受信する?
-
[解決済み] UIButtonのタイトルを左揃えにするにはどうしたらよいですか?
-
[解決済み] Swift で HTTP リクエストを行うにはどうしたらいいですか?
-
[解決済み] コア・データ エンティティの全インスタンスを削除する最短の方法
-
[解決済み] セキュリティで保護されたWebサービスにもアクセスするiOSアプリで、Facebook認証を行うためのデザイン
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
IOSラーニングノート「このクラスはxxxのキーバリューコーディングに対応していません」問題解決
-
EXC_BAD_ACCESS (code=2, address=0x0)
-
[解決済み] 奇妙な不要なXcodeログを隠す
-
[解決済み] UINavigationBarの1px下の行を非表示にする方法
-
[解決済み] UIViewの左上と右上だけにcornerRadiusを設定する方法は?
-
[解決済み] Swift 3, 4, 5 で dispatch_after GCD を書くにはどうしたらいいですか?
-
[解決済み] iPadマルチタスクのサポートには、これらの方向が必要です。
-
[解決済み] UIViewの角丸とドロップシャドウ?
-
[解決済み] iOSアプリをApple Developer Programや脱獄せずにデバイス上でテストすることができます。
-
[解決済み] Cocoapods警告 - CocoaPodsがプロジェクトの基本構成を設定しなかった理由は、プロジェクトに既にカスタム構成が設定されているためです。