2012-01-11 5 views
3

私はiPadアプリケーションでスプラッシュスクリーンを見せたいと思います。その前に私は、現在のデバイスの向きの風景またはポートレートモードを取得したい。私は、Appdelegate.mUIInterfaceOrientationは常にAppDelegate iPadでポートレートを返しますか?

UIInterfaceOrientation orientation= [[UIApplication sharedApplication] statusBarOrientation]; 
    if (orientation == UIInterfaceOrientationLandscapeRight || orientation == UIInterfaceOrientationLandscapeLeft) 
    {  
     splachview=[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 1024, 768)]; 
     splachview.image=[UIImage imageNamed:@"Default-Landscape.png"]; 

     splachview.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin; 
     splachview.contentMode = UIViewContentModeTop; 

     [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:NO]; 
     [self.window addSubview:splachview]; 
    } 
    else if (orientation == UIInterfaceOrientationPortrait || orientation == UIInterfaceOrientationPortraitUpsideDown) 
    { 
     splachview=[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 768, 1024)]; 
     splachview.image=[UIImage imageNamed:@"Default-Portrait.png"]; 

     splachview.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin; 
     splachview.contentMode = UIViewContentModeTop; 

     [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:NO]; 
     [self.window addSubview:splachview]; 
    } 

を使用していました。 UIInterfaceオリエンテーションは常にポートレートモードでのみ検出されます。私は風景モードでアプリを起動しましたが、コントロールは常にポートレートモードのみを検出します。 AppDelegate.mで現在の向きを取得するにはどうすればよいですか?解決策を見つけるのを手伝ってください。前もって感謝します。

答えて

1

AppDelegateではなく、UIViewControllerで行うべきです。 UIViewControllerでは、そのクラスが提供するusing the appropriate methodsビューローテーションの設定セクション)によって、デバイスの位置を正確に知ることができます。

+0

Mr.Jack Boyはあなたの答えに感謝します。このコードの前に、私はUIViewControllerでスプラッシュスクリーンコードを保持していました。あなたの方法で私は、アプリを回転させると、スプラッシュ画面はその向きを変更しません。だから私はAppDelegateでコードを書いたのです。また、AppDelegateではLogInTokenを取得するためのコードを記述しました。私はloginTokenを取得するまでスプラッシュ画面を表示する必要があります。手伝ってくれませんか?ありがとう。 – Gopinath

+0

さて、画面の回転を許可していますか? - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation – Peres

+0

Mr.Jack Boy私はあなたの答えの後で私の問題を解決する自信を持っています。次のとおりです - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOr UIViewControllerのメソッド。もう1つの問題は、[viewcontrollerobj showSplash]を呼び出すことです。 AppDelegateのメソッドでスプラッシュ画面を表示します。それから私はAppDelegateのXMLParserを続けています。 didEndParsingデリゲートで私は[viewcontrollerobj hideSplash]を使ってスプラッシュ画面を隠そうとしました。しかし、コントロールがこのメソッドに達すると、アプリケーションはクラッシュします。どうすればこの問題を解決できますか?あなたは私の質問を理解したいと思います。ありがとう。 – Gopinath

0

コードを読んだ後、アプリの起動時に静止画像を表示することが望ましいようです。コードなしでこれを行う方法があります。

http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/App-RelatedResources/App-RelatedResources.html#//apple_ref/doc/uid/TP40007072-CH6-SW12

あなたが「スプラッシュ」など任意の動的コンテンツを表示したい場合は、のUIViewControllerでそれを処理する必要があるかもしれません。

現在のデバイス方向を取得するには、プロパティ[UIDevice currentDevice]。orientationを読み込みます。ちょうどあなたの参照のために。

+0

Mr.Hail張あなたの答えに感謝します。このコードの前に、私はUIViewControllerでスプラッシュスクリーンコードを保持していました。あなたの方法で私は、アプリを回転させると、スプラッシュ画面はその向きを変更しません。だから私はAppDelegateでコードを書いたのです。また、AppDelegateではLogInTokenを取得するためのコードを記述しました。私はloginTokenを取得するまでスプラッシュ画面を表示する必要があります。手伝ってくれませんか?ありがとう。 – Gopinath

+0

残念ながら、これは後でtooooooになるかもしれません:-)私が知っているように、おそらくrootViewController.viewはそれ自身をローテーションしないという問題があります。つまり、フルサイズのコンテナビューをrootViewController.viewとして作成し、フル幅とフルハイトのマークを自動回転させると、デバイスの向きが変わったときに自動回転が可能になります。 –

関連する問題