登录 立即注册
金钱:

Code4App-iOS开发-iOS 开源代码库-iOS代码实例搜索-iOS特效示例-iOS代码例子下载-Code4App.com

BRDrawerViewController 抽屉效果,按照tabBarController思路封装

[复制链接]
来自: 落叶听秋 分类: iOS精品源码 上传时间: 2016-10-20 15:52:10
Tag:抽屉效果 菜单 自定义 单例模式 menu menu menu

项目介绍:

1.gif


最近项目需求有个抽屉效果,在网上找了一些DEMO,但是没有比较合适的,想来想去,还是选择自己写一个,首先网上的大多数DMEO并不稳定,而且很多的无用代码,使用了过多的第三方框架,当然也有许多的好的,只不过在我这里并用不到,接下来讲一些原理吧。

首先大家应该都有用过TabbarController,我们可以模仿着它的原理来制作这个效果。
首先确定,肯定是一个ViewController,那么我们怎么将要显示的ViewController显示到上面呢?
很简单我们可以利用子视图控制器的特性,将要显示的VC.view addSubView到我们自己写的DrawerVC上面。
再处理一下切换逻辑,创建一个不会消失的tableView,添加到DrawerVC上面,用来控制VC的切换。
接下来就是一些动画的处理,效果的处理了。

由于比较懒,直接给大家截一下Xcode里面的层次分明吧:
首先,最底下一层肯定是我们的window
1.jpg


再下一层,就应该是我们的抽屉效果的VC了,因为我们需要用这个VC来控制整个项目里面所有VC(大部分navigation)的切换。
2.jpg



再下一层应该是tableView,用来控制vc间的切换。
3.jpg


再下一层就应该是被DrawerVC控制的VC了
4.jpg



层次差不多就是这样,接下来说说用法(项目里都有备注)。

获得DrawerVC单例(为了使用简便,直接使用单例模式。):
[Objective-C] 查看源文件 复制代码
[BRDrawerViewController shareDrawer]

调整DrawerVC的布局属性或者手势属性:
[Objective-C] 查看源文件 复制代码
/**
 *  抽屉占屏幕宽度的比例,0~1
 */
@property (assign , nonatomic) CGFloat drawerWidthScale;
/**
 *  tableView的headerView
 */
@property (strong , nonatomic) UIView * tableViewHeaderView;
/**
 *  tableView的footerView
 */
@property (strong , nonatomic) UIView * tableViewFooterView;
/**
 *  headerView的高度
 */
@property (assign , nonatomic) CGFloat headerViewHeight;
/**
 *  footerView的高度
 */
@property (assign , nonatomic) CGFloat footerViewHeight;
/**
 *  是否启用平移手势,默认不开启
 */
@property (assign , nonatomic) BOOL startGesture;
/**
 *  子视图控制器滑动时候的透明度
 */
@property (assign , nonatomic) CGFloat transparentScale;

设置tableView的头视图和头视图的高度
[Objective-C] 查看源文件 复制代码
    /**
     *  设置tableView的头视图
     *
     *  @param headerView   头视图view
     *  @param headerHeight 头视图高度
     */
    [drawerVC setHeaderView:[UIView new] HeaderHeight:100];

设置tableView的尾视图和尾视图高度
[Objective-C] 查看源文件 复制代码
    /**
     *  设置tableView的尾视图
     *
     *  @param headerView   尾视图view
     *  @param headerHeight 尾视图高度
     */
    [drawerVC setFooterView:[UIView new] FooterHeight:100];

返回当前正在显示的vc
[Objective-C] 查看源文件 复制代码
+ (UIViewController *)returnShowViewController;

显示抽屉
[Objective-C] 查看源文件 复制代码
[[BRDrawerViewController shareDrawer] showDrawer];

隐藏抽屉
[Objective-C] 查看源文件 复制代码
[[BRDrawerViewController shareDrawer] dismissDrawer];

添加vc到抽屉
[Objective-C] 查看源文件 复制代码
/**
     *  添加子视图控制器
     *
     *  @param vc    添加的视图
     *  @param title 添加视图的文字描述
     *  @param image 添加视图前面的图片,可以是空。
     */
    [drawerVC addSubViewControllerWithVC:nav1 Title:@"nav1" Image:@"hzw.jpg"];

添加vc到抽屉并设置是否是根视图
[Objective-C] 查看源文件 复制代码
    /**
     *  添加子视图控制器
     *
     *  @param vc      添加的视图
     *  @param title   添加视图的文字描述
     *  @param image   添加视图前面的图片,可以是空。
     *  @param isRoot  添加的vc是否是第一个显示的,如果没有使用这个方法,默认会显示添加的第一个。
     */
    ViewController * vc1 = [ViewController new];
    vc1.view.backgroundColor = [UIColor blueColor];
    UINavigationController *nav1 = [[UINavigationController alloc]initWithRootViewController:vc1];
    [drawerVC addSubViewControllerWithVC:nav1 Title:@"nav1" Image:@"hzw.jpg" IsRoot:YES];
=
差不多就这些内容,并不难,大家多多指教。

[qq]542777648[/qq]
BRDrawerViewController 2.zip (88.8 KB, 下载次数: 858)
2976 3 0
联系我们
首页/微信公众账号投稿

帖子代码编辑/版权问题

QQ:435399051,742864542


代码贡献英雄榜
用户名 下载数
通过邮件订阅最新 Code4App 信息
上一条 /4 下一条
联系我们
关闭
合作电话:
13802416937
Email:
435399051@qq.com
商务市场合作/投稿
问题反馈及帮助
联系我们

广告投放| 广东互联网违法和不良信息举报中心|中国互联网举报中心|Github|申请友链|手机版|Code4App ( 粤ICP备15117877号-1 )

快速回复 返回顶部 返回列表