この質問は 2008 年のものであり、現在は歴史的な関心事のみであることに注意してください。
デバイスの位置に関係なく、最初からランドスケープ モードで実行される iPhone アプリケーションを作成する最善の方法は何ですか?
プログラムと Interface Builder の両方を使用します。
この質問は 2008 年のものであり、現在は歴史的な関心事のみであることに注意してください。
デバイスの位置に関係なく、最初からランドスケープ モードで実行される iPhone アプリケーションを作成する最善の方法は何ですか?
プログラムと Interface Builder の両方を使用します。
この回答は現在非常に古くなっていることに注意してください/
この答えは歴史的な好奇心にすぎません。
エキサイティングなニュース!以下の Andrew によって発見されたように、この問題は Apple によって 4.0 以降で修正されています。
すべてのビューでビューのサイズを強制する必要はもはやないように思われ、ランドスケープの「初めてしか機能しない」という特定の深刻な問題は解決されました。
2011 年 4 月の時点で、4.0 未満のものをテストしたりビルドしたりすることさえできないため、この質問は純粋に歴史的な好奇心です。これほど長い間開発者に多大な迷惑をかけたことは信じられないほどです!
これが元の議論と解決策です。これらのシステムは操作可能でさえないため、これは現在ではまったく関係ありません。
これを完全に機能させるのは非常に困難です。少なくとも 3 つの問題やバグが発生しています。
これを試してみてください..インターフェースビルダーランドスケープデザイン
特に、「そして、shouldAutorotateToInterfaceOrientation をどこでも適切に使用する必要があります」と記載されている場合は、どこでも、すべてのフルスクリーン ビューを意味することに注意してください。
この悪夢に役立つことを願っています!
ここで、追加のよく知られた問題の重要な注意事項: 複数のビュー (すべてのランドスケープ) を切り替えようとしている場合、それは単純に機能しません。これを覚えておくことは不可欠です。そうしないと、問題に何日も費やすことになります。それは文字通り不可能です。これは、iOS プラットフォームで未解決の既知の最大のバグです。文字通り、ロードする 2 番目のビューをランドスケープにするハードウェアを作成する方法はありません。煩わしいが簡単な回避策であり、あなたがしなければならないことは、そこに座ってビューを切り替えるだけの簡単なマスター UIViewController を用意することです。
言い換えれば、iOS では重大な既知のバグが原因で、次のようになります。
[window addSubview:happyThing.view];
[window makeKeyAndVisible];
一度だけ実行できます。後で、happyThing.view を削除しようとして、代わりに newThing.view を挿入しようとしても、機能しません。それだけです。マシンがビューを横向きに回転することはありません。トリックの修正はありません。Apple でさえも機能させることはできません。採用しなければならない回避策は、単にそこに座ってさまざまなビュー (happyThing、newThing など) を保持するだけの全体的な UIViewController を用意することです。それが役に立てば幸い!
Apple Devサイトから:
ステータスバーがすぐに適切な位置にくるようにアプリケーションをランドスケープモードで起動するには、リスト2に示すように、Info.plistファイルを編集して、適切な値(UIInterfaceOrientationLandscapeRightまたはUIInterfaceOrientationLandscapeLeft)を持つUIInterfaceOrientationキーを追加します。
リスト2:アプリケーションをランドスケープモードで起動する
<key>UIInterfaceOrientation</key> <string>UIInterfaceOrientationLandscapeRight</string>
自分でテストした後、すべての投稿からの要約と統合。以下の 4.x、5.x のアップデートを確認してください。
3.2 以降、実行中のアプリケーションの向きをコードから変更することはできません。
ただし、向きを固定してアプリケーションを起動することはできますが、これは簡単ではありません。
このレシピで試してみてください:
UISupportedInterfaceOrientations
しますInfo.plist
shouldAutorotateToInterfaceOrientation:
(もちろん、plistで定義したのと同じ値を返すため)すべてのView Controllerで、バックグラウンドビューを設定します
self.view.frame = CGRectMake(0, 0, 480, 320)
viewDidLoad
メソッドで。
更新 (iOS 4.x、5.x) : Apple iOS アプリ プログラミング ガイドの「高度なアプリのトリック」の章に「横向きモードでの起動」という段落があります。
参考文献:
まず、info.plistに設定します
<key>UIInterfaceOrientation</key>
<string>UIInterfaceOrientationLandscapeRight</string>
次に、このコードをapplicationDidFinishLaunchingに配置します。
CGAffineTransform rotate = CGAffineTransformMakeRotation(1.57079633);
[window setTransform:rotate];
CGRect contentRect = CGRectMake(0, 0, 480, 320);
window.bounds = contentRect;
[window setCenter:CGPointMake(160.0f, 240.0f)];
このようにして、InterfaceBuilderのビューをランドスケープモードで操作できます。
sasbとmichaelpryorの答えは正しいように見えますが、うまくいかない場合は、次の方法を試してください。
- (void)applicationDidFinishLaunchingUIApplication *)application {
application.statusBarOrientation = UIInterfaceOrientationLandscapeRight;
}
またはこれ:
[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];
またはこれ:
[application setStatusBarOrientation: UIInterfaceOrientationLandscapeRight animated:NO];
また、最初に電話する必要があるかもしれませんwindow makeKeyAndVisible;
。
いくつかのリンク:ランドスケープモードでの開発、iPhone SDK:ランドスケープモードのみを強制する方法は?
@Robert: iPhone SDK、NDA、およびStackOverflowを参照してください。
誰もまだこの答えを出していないことに驚いています:
shouldAutorotateToInterfaceOrientation
私のすべてのテストでは、モーダルView Controllerを閉じるときに、UINavigationControllerの一部であっても、設定された親View Controllerの優先方向が尊重されます。したがって、これに対する解決策は簡単です。
背景用の UIImageView を持つダミーの UIViewController を作成します。画像を、アプリが起動時に使用する default.png 画像に設定します。
ルート ビュー コントローラーで呼び出されたらviewWillAppear
、アニメーションなしでダミーのビュー コントローラーを表示するだけです。
がviewDidAppear
ダミー ビュー コントローラーで呼び出されたら、素敵なクロス ディゾルブ アニメーションでビュー コントローラーを閉じます。
これは機能するだけでなく、見栄えもします。ところで、明確にするために、ルートビューコントローラーを次のviewWillAppear
ようにします:
- (void)viewWillAppear:(BOOL)animated
{
if ( dummy != nil ) {
[dummy setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
[self presentModalViewController:dummy animated:NO];
[dummy release];
dummy = nil;
}
...
}
最新の iPhone OS プログラミング ガイドには、これに関する完全なセクションとサンプル コードがあります。これは最近追加されたものだと思いますので、見逃しているかもしれません。遵守しなければならないすべての条件が説明されています。基本的...
102 ページの「横向きモードでの起動」を探してください。
この回答を参照してください: iPhone または iPad の横向きモードのみ
ただし、混合モードを使用している場合は、
[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];