如何以横向自动打开 SWRevealViewController 侧面板

Posted

技术标签:

【中文标题】如何以横向自动打开 SWRevealViewController 侧面板【英文标题】:How to open SWRevealViewController side panel automatically in landscape orientation 【发布时间】:2014-07-11 05:48:39 【问题描述】:

我正在尝试使用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;

谁能告诉我我应该怎么做?

【问题讨论】:

【参考方案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 旋转到横向模式时,侧面板会自动打开;当我将其旋转回纵向模式时,它会关闭侧面板。

【讨论】:

我有一个问题,当 iphone 处于纵向模式时,swrevealcontroller 可以找到并允许用户在打开菜单时滚动。当它进入横向模式时,菜单幻灯片按预期打开,但我无法滚动到菜单中的所有选项!?你遇到过这个问题吗?

以上是关于如何以横向自动打开 SWRevealViewController 侧面板的主要内容,如果未能解决你的问题,请参考以下文章

以横向模式打开视图[重复]

如何从纵向视图打开横向视图

仅在 Swift 中以横向模式打开相机和库

如何使用 javascript/Extjs 进行默认横向打印?

如何以横向模式打印 PDF

当应用程序以横向模式启动时如何将视图调整为横向模式