アプリのサポート:iOS6以降
私のアプリは縦向きでも横向きでも動作します。ただし、1つのコントローラーはポートレートでのみ機能します。
問題は、私が横向きでビューコントローラーをプッシュすると、新しいビューコントローラーも横向きになるまで横向きになることです。その後、本来の形でポートレートに固定されます。
常にポートレートで表示することは可能ですか?その親がそれを横向きに押していたとしても?
次のコードはすべて役に立たない
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait];
そして、このコードは私がランドスケープからプッシュしない限り、そしてそれ以外の場合は機能します iOS 6でUIViewControllerをポートレイト方向に強制する方法
ViewDidLoadに次の行を追加することでこれを解決しました
UIViewController *c = [[UIViewController alloc]init];
[self presentViewController:c animated:NO completion:nil];
[self dismissViewControllerAnimated:NO completion:nil];
まず、カテゴリを作成する必要があります。
UINavigationController + Rotation_IOS6.h
#import <UIKit/UIKit.h>
@interface UINavigationController (Rotation_IOS6)
@end
UINavigationController + Rotation_IOS6.m:
#import "UINavigationController+Rotation_IOS6.h"
@implementation UINavigationController (Rotation_IOS6)
-(BOOL)shouldAutorotate
{
return [[self.viewControllers lastObject] shouldAutorotate];
}
-(NSUInteger)supportedInterfaceOrientations
{
return [[self.viewControllers lastObject] supportedInterfaceOrientations];
}
@end
次に、ランドスケープのみにしたいクラスにこれらのメソッドを実装します。
- (BOOL)shouldAutorotate
{
return YES;
}
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskLandscape;
}
UITabBarControllerを使用している場合は、UITabBarControllerのUINavigationControllerを置き換えるだけです。この解決策は、長い検索の後でうまくいきました。私はあなたと同じ状況にありました!
[〜#〜]編集[〜#〜]
だから、私はあなたのサンプルを見ました。いくつか変更する必要があります。 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;
}