ギャラリーのオートローテーション - willAnimateRotationは...呼び出されません

StackOverflow https://stackoverflow.com/questions/4012797

質問

私はこのに使用しています。

私は画像が追加される場所でこれを入れてきました。

self.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

私はSlideShowViewControllerでこれらのオーバーライドを入れている。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{
    return YES;
}

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)InterfaceOrientation duration:(NSTimeInterval)duration {


}

第一、第二と呼ばれるが、されていない。

私はペン先を使っていませんよ。それは上の3枚の画像とself.viewを返すカスタムのinitを使用します。

アム私は何かが足りませんか?何がiPhoneがユーザによって回転させたときの写真が全幅にストレッチ風景を取得するには、このスクリプトを変更するための最良の方法だろうか?

編集:ちょうど私のNavigationControllerのルートビューコントローラに... willAnimateを追加しようとしたが、それが呼び出されていません。おそらく、NavigationControllerは問題がありますか?私はwillAnimateを入れてくださいその場合、...?また、どのように私は見えるのViewControllerの方に送信されたメッセージで受信し、合格していますか?

編集2:トピックでのエラーの原因がTabBarControllerはIBで接続欠けていたということでした(私は確信していたそこにありました)。だから今私の問題は、いくつかの他の類似の質問の場合と同じである - willAnimate ...ではなくプッシュのVCのルートVCで呼ばれています。私はギャラリーVCではなくスライドをフェードインを使用したコード、すなわち。それがプッシュされますが、現在のウィンドウにサブビューとして追加されていないです - 。ディスプレイ全体を埋めるために、

どのようにフレームを設定するには、サブビューのコントローラが理解されるだろうとのメッセージ、または代替ソリューションへの提案!

役に立ちましたか?

解決

これは、なぜあなたへの答えではありません「willAnimateRotation ..」 - 。方法は、トリガが、画像ギャラリーは、回転自体に適応することができる方法の代わりに代替しません。

でinitWithImagesを追加します。

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(didRotate:)
                                             name:UIDeviceOrientationDidChangeNotification object:nil];

の通知を受け取るために、このメソッドを追加します。 didRotateでは、画像のリサイズ再配置を処理することができます。

- (void) didRotate:(NSNotification *)notification
{   
    UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];

    if (orientation == UIDeviceOrientationLandscapeLeft)
    {
        NSLog(@"Landscape Left!");
    }
}

DOはのdeallocでの通知の登録を解除することを忘れないで:

[[NSNotificationCenter defaultCenter] removeObserver:self name:UIDeviceOrientationDidChangeNotification object:nil];

月、私もあなたの代わりに自分をスクロールし、ジェスチャー取り扱いのUIScrollViewのを使用することを示唆している?

他のヒント

であるSlideShowViewControllerは、ナビゲーションコントローラのスタックに直接プッシュ、またはそれはいくつかの他のビューの一部ですか?ナビゲーションコントローラのスタック上のビューにサブビューを扱う際のUIViewデリゲートメソッドは、一種のめちゃくちゃ取得します。

SlideShowViewControllerナビゲーションコントローラのスタックにプッシュされていますいくつかの他のビューのちょうどサブビューある場合は、

、私はナビゲーションコントローラのスタック上に実際にあるビューコントローラでは、この方法をリッスンしようとし、その後に適切なメソッドを呼び出すでしょうそこからSlideShowViewControllerます。

私はviewWillAppearとナビゲーションコントローラ内と呼ばれる同様の方法を得ることにも同様の問題があった。
私は、rootメソッドが呼び出されたときに、手動でそれらを呼び出すことで解決しました。
それは回転と同じ問題だ場合、私は知りませんが、あなたはあなたのルートビューコントローラ

に入れてみてください
-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)InterfaceOrientation duration:(NSTimeInterval)duration {
    [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
    [self.navigatioController willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration];
}
それは私の特定の非基本的なアプリのセットアップについてだったので、

この質問は、私が推測答えることは少しトリッキーでした。申し訳ありませんが不足して賞金時間をさせるために、それは基本的に私は尋ね手遅れ同じ日だった;)

私はこれと同じ症状を取得する人のためのコメントに埋め込まれていない」を投稿しようと思いました。

まず、私は私が一点に接続されたI、もはや接続されていた( - > tabBarControllerオブジェクトタブバーコントローラ)確信していることをIBOutletに気づいたということでした。私はこの仕事をするために私の頭脳と動き回るものをラッキングされたので、これはおそらく、バックアップを復元し、その後、何かをしようと私のためであった。

ソリューションの第二部は、addSubViewにtabBarControllerのビューの代わりにナビゲート-を視野に、ギャラリービューでした。そして、ルートビューコントローラのshouldAuto ...とwillAutoメソッドが呼び出された。

(回転しながらタブバーとナビゲーションバーを非表示にするには、私はそれに戻ったときにそれ以外のナビゲート-に視野の一部が、ナビゲーションバーの下に隠された、ギャラリーが表示されているときに0に自分のαを設定する必要がありました。私はノーましたギャラリーを見せながらステータスバーを非表示にする方法。)

は、この後に別のタブからに移動、詳細ビューでギャラリーを持っているために要求があった、と私は他の(作業)詳細ビューが作業を自動回転だろう、他のタブの下に示された間だけトリッキーなエラーが発生しました新しいギャラリーで。この、quittin時の解に戻って取得します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top