0

SWRevealViewControllerデバイスが横向きになったときにサイドパネルを自動的に表示するアプリを作成しようとしていますが、アプリが最初に開いたときにそうすることができますが、その後はできません。基本的に、iPad のメール アプリのように動作するようにしようとしていますが、ランドスケープ モードでサイド パネルを手動で閉じることができます。AppDelegate でこれを試しましたが成功しませんでした:

#import "AppDelegate.h"
#import "SWRevealViewController.h"

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    SWRevealViewController *revealViewController = (SWRevealViewController *)self.window.rootViewController;

    UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
    if (orientation == UIInterfaceOrientationPortrait) {

    }   
    if (orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight) {

        if (revealViewController.frontViewPosition == FrontViewPositionLeft) {
            [revealViewController revealToggleAnimated:YES];           
        }
    }
    return YES;
}

代わりに何をすべきか教えてください。

4

1 に答える 1

1

私はついにそれを理解しました。より簡単な方法は、単純に次のコードをフロント ビュー コントローラーに追加することです。

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    UIInterfaceOrientation interfaceOrientation = [[UIApplication sharedApplication] statusBarOrientation];
    [self openSidePanel:interfaceOrientation];
}

- (void)openSidePanel:(UIInterfaceOrientation)orientation
{
    if (UIInterfaceOrientationIsLandscape(orientation)) {
        [self.revealViewController setFrontViewPosition:FrontViewPositionRight animated:YES];
    }
    else {
        [self.revealViewController setFrontViewPosition:FrontViewPositionLeft animated:YES];
    }

}

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    [self openSidePanel:toInterfaceOrientation];
}

これで、iPad を横向きモードに回転させると、サイド パネルが自動的に開きます。回転させてポートレート モードに戻すと、サイド パネルが閉じます。

于 2014-07-11T07:47:23.117 に答える