これらのメソッドを実装するために、UINavigationControllerをオーバーライドしました。
-(BOOL)shouldAutorotate
{
return [[self.viewControllers lastObject] shouldAutorotate];
}
-(NSUInteger)supportedInterfaceOrientations
{
return [[self.viewControllers lastObject] supportedInterfaceOrientations];
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return [[self.viewControllers lastObject] preferredInterfaceOrientationForPresentation];
}
最初のビューから、このMSNavigationPaneViewControllerをここにモーダルに表示します。これはFacebook側のスライド式タブバーコントローラーのようなものです。
アプリの残りのビューがポートレートのみであるのに対し、ここに表示されるビューコントローラーの1つをランドスケープのみで表示する必要があります。
したがって、他のすべてのViewControllerに次のものを追加しました。
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
- (BOOL)shouldAutorotate
{
return UIInterfaceOrientationMaskPortrait;
}
そして、私が追加したランドスケープが欲しいものに:
- (BOOL)shouldAutorotate
{
return UIInterfaceOrientationMaskLandscape;
}
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskLandscape;
}
ただし、すべてのビューが回転します。
これらの他のビューでNOに変更shouldRotate
すると、それらは縦向きのままになり、横向きにしたいビューは回転できますが、それ自体を回転させることはできません。また、一度回転すると、別のビューにshouldRotate = NO;
戻ると、ポートレートに戻すことはできません。
私はこれに何時間もいて、それを機能させることができません。
ありがとう
編集 - - -
私は今この半分を機能させており、ここで自動回転を機能させるための新しい質問を開始しました