1

アプリ デリゲートでこれを使用してすべてのビューに回転を提供しますが、1 つのビューではこのメソッドをオーバーライドする必要がないため、ビューは縦向きビューのみをサポートします

メソッド (delegate.m)

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window{
  return UIInterfaceOrientationMaskPortrait  | UIInterfaceOrientationMaskLandscape;
}
4

2 に答える 2

1

UIViewControllerそれ自体で利用可能なメソッドを使用しないのはなぜですか?

必要な向きに応じて、特定のクラスでこれらのメソッドを使用できます。

- (BOOL)shouldAutorotate
- (NSUInteger)supportedInterfaceOrientations
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation

AppDelegate には、既にこのメソッドがあり、他の場所では必要ありません。

-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window

{
    return UIInterfaceOrientationMaskAllButUpsideDown;
}

Apple ドキュメントから

このメソッドは、自身を明示的に指定していないビュー コントローラーに使用するインターフェイスの向きを返します。ビュー コントローラが supportedInterfaceOrientations または shouldAutorotateToInterfaceOrientation: メソッドをオーバーライドしない場合、このメソッドによって返される方向が使用されます。

このメソッドを実装しない場合、アプリケーションは、アプリの Info.plist の UIInterfaceOrientation キーの値をデフォルトのインターフェイスの向きとして使用します。

使用している場合は更新UINavigationController

この場合、カスタムを実装する必要があります。これは、さまざまなビューコントローラーに提供したインターフェイスの向きを乱す可能性があるUINavigationControllerためです。navigationController

CutomNavigationController.h

#import <UIKit/UIKit.h>

@interface CutomNavigationController : UINavigationController
@end

CutomNavigationController.m

#import "CutomNavigationController.h"


@interface CutomNavigationController ()

@end

@implementation CutomNavigationController

//overriding shouldRotate method for working in navController
-(BOOL)shouldAutorotate
{
    
  return   [self.visibleViewController shouldAutorotate];
    
}

-(NSUInteger)supportedInterfaceOrientations
{

      return [self.topViewController supportedInterfaceOrientations];
    
}

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

最後に、これを で使用CustomNavigationControllerします。これは、すべてのビュー コントローラーのAppDelegateとして参照されます。navigationcontroller

于 2013-03-15T15:53:25.573 に答える
0

これはすべてView Controllerで処理する必要があります。UIViewController メソッドを使用します。

- (NSUInteger)supportedInterfaceOrientations{}
于 2013-03-15T15:54:36.027 に答える