注意:如果您的应用程序同时支持横屏和竖屏,并且支持iOS 8以下的版本,则请使用版本1.4.5。
iOS Slide Menu在UINavigationController之上构建,具有可配置的按钮、揭示动画和点击/滑动手势识别器。
启用shouldRecognizeSimultaneouslyWithGestureRecognizer可能引起问题,如果您遇到意外的手势行为,请删除pod并重新安装,因为该方法已被删除。
switchToViewController:withCompletion:
方法已被弃用。为了获得相同的行为,请使用 popToRootAndSwitchToViewController:withCompletion
新功能
如果您是从以前的版本更新,您将遇到编译错误,因为这些是由于RevealAnimations的改变。动画配置现在是不同的处理方式,并且与SlideNavigationController分开。请参见以下内容以获取更多信息。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
LeftMenuViewController *leftMenu = [[LeftMenuViewController alloc] init];
RightMenuViewController *rightMenu = [[RightMenuViewController alloc] init];
[SlideNavigationController sharedInstance].rightMenu = rightMenu;
[SlideNavigationController sharedInstance].leftMenu = leftMenu;
// Override point for customization after application launch.
return YES;
}
您可以通过实现SlideNavigationControllerDelegate的以下委托方法来决定是否在每个viewController中启用或禁用滑动功能。这些方法是可选的,如果不实现,则为特定的viewController禁用菜单功能。
@interface MyViewController : UIViewController <SlideNavigationControllerDelegate>
@end
@implementation MyViewController
- (BOOL)slideNavigationControllerShouldDisplayLeftMenu
{
return YES;
}
- (BOOL)slideNavigationControllerShouldDisplayRightMenu
{
return YES;
}
@end
默认值设置为YES。如果设置为YES,则在切换到新的viewController时,如果新的viewController与当前viewController的类型相同,则会关闭菜单而不是切换到viewController。
如果设置为NO,则无论类型如何都会切换到viewController。
这在您有一个菜单项,并且当用户选择已选中的菜单项时,您不想导航到viewController的新实例时非常有用。
设置为“是”时,用户可以通过滑动来打开菜单
设置为“否”时,滑动将不可用,用户只能通过添加到navigationBar的UIBarButtonItem来打开菜单
此属性允许您限制手势操作到视图的边缘。例如,将此值设置为50意味着触摸被限制在视图右侧和左侧各50像素内。如果有在UITableView上实现滑动删除功能的需求,这可能会很有用。
panGestureSideOffset的默认值设置为0。将panGestureSideOffset设置为0表示如果启用滑动手势为true,则在整个视图中检测触摸。
一个布尔值,允许您打开或关闭阴影。默认情况下阴影设置为true
navigationController中右侧菜单的viewController
navigationController中左侧菜单的viewController
默认值为null。当此按钮被设置时,navigationController使用该UIBarButtonItem作为左边的项。此属性是用于需要自定义UIBarButtonItem时的情况(使用自定义视图初始化UIBarButtonItem)
行为完全相同于leftBarButtonItem,但用作菜单的右按钮
portraitSlideOffset的默认值为60。这意味着在竖屏模式下打开菜单时,可见部分的navigationController的宽度为60像素
landscapeSlideOffset的默认值为60。这意味着在横屏模式下打开菜单时,可见部分的navigationController的宽度为60像素
动画持续时间的默认值为.3,此属性允许配置动画持续时间
默认为UIViewAnimationOptionCurveEaseOut,您可以将此属性更改为配置动画选项
menuRevealAnimator用于在显示时对左右菜单进行动画。默认值为nil,这意味着打开/关闭菜单时不会发生任何动画。
存在一些可用的动画类可用。这些动画类可以通过初始化方法选项进行配置。
SlideNavigationContorllerAnimatorSlideAndFade *alideAndFadeAnimator = [[SlideNavigationContorllerAnimatorSlideAndFade alloc] initWithMaximumFadeAlpha:.8 fadeColor:[UIColor redColor] andSlideMovement:100];
[SlideNavigationController sharedInstance].menuRevealAnimator = alideAndFadeAnimator;
返回SlideNavigationController的单例实例
此方法已被弃用
弹出到根视图控制器并调用完成
类似于前一个方法,但在切换时可以开启/关闭滑出动画
用包含新 ViewController 的新栈替换 ViewController 栈,并调用完成
类似于前一个方法,但在切换时可以开启/关闭滑出动画
打开指定的菜单并在动画完成后调用完成块
关闭菜单并在动画完成后调用完成块
根据现有状态切换菜单的打开或关闭。这样做是为了将选择器传递给自定义 UIBarButtonItem(例如,具有自定义视图的 UIBarButtonItem)
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];
[button setImage:[UIImage imageNamed:@"menu-button"] forState:UIControlStateNormal];
[button addTarget:[SlideNavigationController sharedInstance] action:@selector(toggleRightMenu) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button];
[SlideNavigationController sharedInstance].rightBarButtonItem = rightBarButtonItem;
反弹右或左菜单,并在动画完成后调用完成块
与 toggleLeftMenu 工作完全相同,但用于切换左菜单
返回一个布尔值,表示菜单是打开还是关闭
SlideNavigationController 允许自定义揭示动画。要添加自定义动画,请创建一个新类,实现 SlideNavigationContorllerAnimator 协议。有关更多信息,请参阅现有动画类。
此方法在菜单即将揭示之前被调用
此方法在菜单揭示时被调用,并传递用于动画的进度(进度在 0 和 1 之间)
此方法在动画实例需要更改时被调用,例如从SlideNavigationContorllerAnimatorFade更改为SlideNavigationContorllerAnimatorSlide。在此方法中,如果需要,应清除菜单的状态。例如,如果您为了显示动画而向菜单中添加了一个视图,那么在clear被调用时应将其移除。公共方法
每次菜单完全打开时都会发布此通知。Userinfo包含一个键为"menu"的值,可能有两个值:"left"和"right"。
每次菜单完全关闭时都会发布此通知。Userinfo包含一个键为"menu"的值,可能有两个值:"left"和"right"。
每次菜单显示时都会发布此通知。Userinfo包含一个键为"menu"的值,可能有两个值:"left"和"right"。