iOS好用的第三方侧边栏控件——MMDrawerController(二)

简介: iOS好用的第三方侧边栏控件——MMDrawerController

三、关于MMDrawerController的子类


       开发者如果有特殊的需求,也可以通过继承MMDrawerController来实现自己的侧边栏控制器类,MMDrawerController框架中提供了一个扩展,在编写MMDrawerController时,开发者可以导入MMDrawerController+Subclass.h文件,这个文件中提供了许多控制器的监听方法供开发者重写,解析如下:


//出现单击手势会回调的方法 如果要重写 必须调用父类的此方法

-(void)tapGestureCallback:(UITapGestureRecognizer *)tapGesture __attribute((objc_requires_super));

//出现滑动手势会回调的方法 如果要重写 必须调用父类的此方法

-(void)panGestureCallback:(UIPanGestureRecognizer *)panGesture __attribute((objc_requires_super));

//决定是否响应某个手势

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch __attribute((objc_requires_super));

//准备展示侧边栏时调用的方法

-(void)prepareToPresentDrawer:(MMDrawerSide)drawer animated:(BOOL)animated __attribute((objc_requires_super));

//关闭侧边栏时调用的方法

-(void)closeDrawerAnimated:(BOOL)animated velocity:(CGFloat)velocity animationOptions:(UIViewAnimationOptions)options completion:(void (^)(BOOL))completion __attribute((objc_requires_super));

//打开侧边栏时调用的方法

-(void)openDrawerSide:(MMDrawerSide)drawerSide animated:(BOOL)animated velocity:(CGFloat)velocity animationOptions:(UIViewAnimationOptions)options completion:(void (^)(BOOL))completion __attribute((objc_requires_super));

//设备旋转方向时调用的方法

-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration __attribute((objc_requires_super));

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration __attribute((objc_requires_super));

四、一些辅助类


       MMDrawerController框架中还提供了一个MMDrawerBarButtonItem的辅助类,这个类可以创建三道杠的菜单按钮。其中方法如下:


//初始化方法

-(id)initWithTarget:(id)target action:(SEL)action;

//获取某个状态下的按钮颜色

-(UIColor *)menuButtonColorForState:(UIControlState)state __attribute__((deprecated("Use tintColor instead")));

//设置某个状态的按钮颜色

-(void)setMenuButtonColor:(UIColor *)color forState:(UIControlState)state __attribute__((deprecated("Use tintColor instead")));

MMDrawerBarButtonItem继承自UIBarButtonItem,可以直接在导航栏上使用。


       前面有提到,侧边栏的展现动画开发者可以进行自定义,为了使开发者在使用MMDrawerController时更加方便,MMDrawerController框架中还提供了一个动画辅助类MMDrawerVisualState,这个类中封装好了许多动画效果,开发者可以直接使用,示例如下:


//使用提供的动画模板

[rootController setDrawerVisualStateBlock:[MMDrawerVisualState slideAndScaleVisualStateBlock]];

MMDrawerVisualState中所提供的动画模板列举如下:


//从后向前渐现

+(MMDrawerControllerDrawerVisualStateBlock)slideAndScaleVisualStateBlock;

//滑动渐现

+(MMDrawerControllerDrawerVisualStateBlock)slideVisualStateBlock;

//立方动画

+(MMDrawerControllerDrawerVisualStateBlock)swingingDoorVisualStateBlock;

//视差动画

+(MMDrawerControllerDrawerVisualStateBlock)parallaxVisualStateBlockWithParallaxFactor:(CGFloat)parallaxFactor;

五、MMDrawerController无法完成的需求


       为了确保MMDrawerController库的轻量级,其作者在设计时也做了功能上的取舍权衡,MMDrawerController无法完成以下需求:


1.上边栏与下边栏。


2.同时展示左边栏与又边栏。


3.无法设置显示一个最小的抽屉宽度。


4.不能支持UITabBarController容器。


5.不能在中心视图控制器之上呈现侧边栏视图。

目录
相关文章
|
iOS开发
iOS开发中使用第三方静态字体
iOS开发中使用第三方静态字体
|
数据安全/隐私保护 Android开发 iOS开发
解决第三方邮箱APP登陆QQ、163邮箱无法验证账户名或密码的问题(IOS、MacOS、Windows、Android)
解决第三方邮箱APP登陆QQ、163邮箱无法验证账户名或密码的问题(IOS、MacOS、Windows、Android)
204 0
|
iOS开发
iOS 多个滚动控件嵌套Demo
iOS 多个滚动控件嵌套Demo
69 0
|
iOS开发
iOS 常用的 上下左右 拉刷新控件
iOS 常用的 上下左右 拉刷新控件
99 0
|
iOS开发
iOS 第三方dSYM定位BUG
iOS 第三方dSYM定位BUG
129 0
|
iOS开发
iOS短信验证码控件,自动输入回调两次解决办法
iOS短信验证码控件,自动输入回调两次解决办法
452 0
|
iOS开发
IOS的UITableView控件简单使用
IOS的UITableView控件简单使用
154 0
|
iOS开发
imazing2023许可证码第三方iOS设备管理软件
iMazing是一款iPhone备份软件,使用iMazing几乎可以备份iPhone的全部数据,不仅包括照片、视频,还包括短信、通讯录,APP数据等。
975 1
imazing2023许可证码第三方iOS设备管理软件
|
iOS开发
iOS开发 - 写一个刷新的控件(未封装,适合新手学习,查看原理)
iOS开发 - 写一个刷新的控件(未封装,适合新手学习,查看原理)
147 0
iOS开发 - 写一个刷新的控件(未封装,适合新手学习,查看原理)
|
安全 iOS开发
iOS小技能:下拉刷新控件的适配
1. 下拉顶部背景色设置: 往tableView的父控件添加拉伸背景视图 2. present 半屏适配 iOS13 modalPresentationStyle属性默认不是全屏样式`UIModalPresentationFullScreen`,而是半屏样式,需要根据需求手动设置。 present 半屏,会导致列表下拉刷新失效。
202 0
iOS小技能:下拉刷新控件的适配