2011-12-15 3 views
4

私のiPhoneアプリはすべて、今はポートレートモードです。アプリで1つのビューを横向きに、他のすべてを縦向きにすることはできますか?

しかし、ワイドスクリーンモードで動画を再生し、ポートレートモードで最も効果的なUI要素を描画する必要があります。また、時々画面にテキスト入力があるので、キーボードもポートレイトとして表示する必要があります。

UIViewControllerに、Landscapeに移動する必要があることをロードすると、スタックの親ビューがPortraitになるように指示できますか?

私は回転しているユーザーを検出したくないので、どの画面を横長にし、どの画面を縦長にするかを決めたいと思います。

要約すると、私のアプリのeveryscreen/viewは、Landscapeを作成したいものを除いて、ポートレートになります。それはできますか?

多くのおかげで、 -code

答えて

2

あなたがこの方法

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
// Return YES for supported orientations 
BOOL result = NO; 
if (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || 
      interfaceOrientation == UIInterfaceOrientationLandscapeRight) { 
    result = YES; 
} 
return result; 
} 

を実装すると、あなたがサポートしたい方向についてYESを返します。
このメソッドは、ロード時にUIViewControllerを呼び出すので、UIViewControllerに入力するたびに呼び出されることはありません。


そして、あなたが他のすべてのUIViewControllerが希望の向きであることを絶対的に一定にしたい場合は、同様にそれらでこのメソッドを実装します。

+0

たい(LandscapeRight、LandscapeLeftまたはポートレート)何に変更し;'または単にifの中に 'return TRUE'を入れ、elseの後ろに置く。これは同じコードで、ちょっと圧縮されていて、ここで変数を作る必要はありません。 – WolfLink

+0

@WolfLink最初の部分は同意しますが、失敗の早期返却ではないことを嫌いです。しかし、とにかく、私は教育的な理由から、あなたが取る必要があるオプションを非常にはっきりと示すために、このようなコードをここに構築しました。しかし、あなたが言ったように、 'if'がYESまたはNOと評価された場合、Appleのテンプレートのように直接結果を返さないようにしてください。 –

+0

あなたは単に '' 'UIInterfaceOrientationIsLandscape(interfaceOrientation)を返すことができます;' '' –

1

うん、縦向き用[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight]];や肖像を使用します。あなたのUIViewControllerで

0
override func viewWillAppear(animated: Bool) { 
    let value = UIInterfaceOrientation.LandscapeRight.rawValue 
    UIDevice.currentDevice().setValue(value, forKey: "orientation") 
    UIApplication.sharedApplication().statusBarHidden = true 
} 


override func shouldAutorotate() -> Bool { 
    return true 
} 

、あなたは私が少し単純リターン(interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight) `のようなものを使用することをお勧めし

関連する問題