2016-10-24 18 views
0

私のUIViewControllerはshouldAutorotateメソッドを呼び出さなかった。
VCをポートレートモードで強制的に表示するにはいくつかの方法が試されました。
shouldAutorotate呼び出されていません - [ストーリーボードを使用していません]

サンプルコード以下である:
'ポートレート'、「風景として

AppDelegate.m

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
self.window.backgroundColor = [UIColor whiteColor]; 
self.navController = [[UINavigationController alloc] initWithRootViewController:[[VCLogin alloc] init]]; 
[self.window setRootViewController:self.navController]; 
[UIApplication sharedApplication].statusBarHidden = YES; 
[self.window makeKeyAndVisible]; 

VCLogin.m

- (BOOL)shouldAutorotate 
{ 
    return [self.navigationController.visibleViewController shouldAutorotate]; 
} 

- (UIInterfaceOrientationMask)supportedInterfaceOrientations { 
    return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationPortraitUpsideDown; 
} 

そして対応デバイスオリエンテーション「左」と「右向き」

ご了承ください。
ありがとうございます。次のコードを追加し

+0

特定のVCをポートレートモードにする必要がありますか? – vaibhav

+0

はい。私はiOS 10を使用しています –

答えて

0

は、私は解決策を得ました。

カスタムUINavigationControllerクラスが追加されました。

navigationControllerViewController.h

#import <UIKit/UIKit.h> 

@interface navigationControllerViewController : UINavigationController 

@end 

と、以下の方法

navigationControllerViewController.m

- (BOOL)shouldAutorotate { 
    return [self.visibleViewController shouldAutorotate]; 
} 

- (UIInterfaceOrientationMask)supportedInterfaceOrientations { 
    return [self.visibleViewController supportedInterfaceOrientations]; 
} 

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { 
    return [self.visibleViewController preferredInterfaceOrientationForPresentation]; 
} 

をオーバーライド次いで AppDelegate.m F内部このカスタム・ナビゲーション・コントローラを割り当てile

// Replace 
self.navController = [[UINavigationController alloc] initWithRootViewController:[[VCMasterView alloc] init]]; 

// With 
self.navController = [[navigationControllerViewController alloc] initWithRootViewController:[[VCMasterView alloc] init]]; 
0

試してみてください。

-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window 
{ 
return UIInterfaceOrientationMaskAllButUpsideDown; 
//or return UIInterfaceOrientationMaskPortrait , etc as your requirement 
} 
+0

実際に私は全体のアプリケーションでポートレートモードで1つだけのVCを維持するために探しています。 –

+0

コンパクトな幅と普通の高さ –

+0

残念ながら私のプロジェクトはストーリーボードの下にはありません。それはxibファイルだけを保持しています。 –

関連する問題