まずから押していないですしない限り、あなたは、カテゴリを作成する必要があります。
UINavigationController + Rotation_IOS6.h
#import <UIKit/UIKit.h>
@interface UINavigationController (Rotation_IOS6)
@end
UINavigationController + Rotation_IOS6.m:ちょうど置き換え、あなたはUITabBarControllerを使用している場合は
- (BOOL)shouldAutorotate
{
return YES;
}
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskLandscape;
}
:
#import "UINavigationController+Rotation_IOS6.h"
@implementation UINavigationController (Rotation_IOS6)
-(BOOL)shouldAutorotate
{
return [[self.viewControllers lastObject] shouldAutorotate];
}
-(NSUInteger)supportedInterfaceOrientations
{
return [[self.viewControllers lastObject] supportedInterfaceOrientations];
}
@end
次に、あなたが唯一の風景になりたいあなたのクラスでこれらのメソッドを実装しますUITabBarControllerのためのUINavigationController。 このソリューションは、長い検索の後に私のためにうまくいった!私は今あなたと同じ状況にいました!
EDIT
だから、私はあなたのサンプルを見ました。あなたはいくつかの変更を加える必要があります。 1 - UINavigationControllerカテゴリの新しいクラスを作成します。クラス名をUINavigationController + Rotation_IOS6(.hと.m) 2にする - メソッドpreferredInterfaceOrientationForPresentation
を実装する必要はありません。
#import "UINavigationController+Rotation_IOS6.h"
@implementation UINavigationController (Rotation_IOS6)
-(BOOL)shouldAutorotate
{
return [[self.viewControllers lastObject] shouldAutorotate];
}
-(NSUInteger)supportedInterfaceOrientations
{
return [[self.viewControllers lastObject] supportedInterfaceOrientations];
}
@end
3 - クラスではあなただけの風景の中に回転したい、まさにこのように、実装でこれを含める:あなたのカテゴリには、次のようになります
// Rotation methods for iOS 6
- (BOOL)shouldAutorotate
{
return YES;
}
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskLandscape;
}
4 - 私がアドバイスうまた、あなたが風景にするクラス内部のiOS 5のためのオートローテーションのための方法を含む:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return UIInterfaceOrientationLandscapeLeft | UIInterfaceOrientationLandscapeRight;
}
確認済み、動作します! – Chris
+1:viewcontrollerが登場する前に向きを強制的に変更する必要がありました。これがトリックでした。オリエンテーションを強制する「公式」な方法を知ってほしかったですが、私がするまでは、このメソッドを使用します。 – brainjam
ビューを複数回呼び出す予定がある場合は、これらの行をviewWillAppearに追加することをお勧めします。 – ChavirA