如何以横向自动打开 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 侧面板的主要内容,如果未能解决你的问题,请参考以下文章