专栏名称: Cocoa开发者社区
CocoaChina苹果开发中文社区官方微信,提供教程资源、app推广营销、招聘、外包及培训信息、各类沙龙交流活动以及更多开发者服务。
目录
相关文章推荐
51好读  ›  专栏  ›  Cocoa开发者社区

iOS-仿QQ侧边栏

Cocoa开发者社区  · 公众号  · ios  · 2016-08-12 08:03

正文

▲点击上方“CocoaChina”关注即可免费学习 iOS 开发


作者:leiliang

原文链接:http://www.jianshu.com/p/8b1d86d694cf


侧边栏是现在app中很常用的一种UI展示方式,这里我封装了QQ的侧边栏进行了一下较为简单的封装,使用起来很简单,接入方式如下:


// tabBarController

PSTabBarController *tabBarVC = [[PSTabBarController alloc] init];

// 左侧视图

LeftView *leftView = [[LeftView alloc] initWithFrame:CGRectMake(-self.window.width * (1 - kLeftWidthScale), 0, self.window.width, self.window.height)];

// 接入侧边栏

[[PSDrawerManager instance] installCenterViewController:tabBarVC leftView:leftView];


如果你想要像QQ中一样,只有在tabBar选中某一项的时候才能够展示侧边栏,那么你可以像这样调用:


#pragma mark -

#pragma mark - UITabBarController protocol methods

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {

if ([viewController isKindOfClass:[UINavigationController class]]) {

UINavigationController *navigationController = (UINavigationController *)viewController;

UIViewController *_viewController = navigationController.viewControllers.firstObject;

if ([_viewController isKindOfClass:[MessageViewController class]]) {

// 启动手势响应

[[PSDrawerManager instance] beginDragResponse];

} else {

// 取消手势响应

[[PSDrawerManager instance] cancelDragResponse];

}

}

}


如果你想要点击侧边栏中列表的某一项,自动回到主控制器你可以这样:


- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

// 回到中间控制器

[[PSDrawerManager instance] resetShowType:PSDrawerManagerShowCenter];

// 在这里进行页面跳转

//    [navigationController pushViewController:viewController animated:YES];

}


只需要这几行代码就可以接入侧边栏,另外还提供了一些接口,大家可以查看"PSDrawerManager"文件,.h接口如下:


/** 设置中心控制器及左侧视图

* @param centerViewController: 中心控制器

* @param leftView: 左侧视图

*/

- (void)installCenterViewController:(UIViewController *)centerViewController leftView:(UIView *)leftView;

// 隐藏侧边阴影

- (void)hiddenShadow;

// 显示侧边阴影

- (void)showShadow;

// 开启拖拽响应

- (void)beginDragResponse;

// 取消拖拽响应

- (void)cancelDragResponse;

/** 设置显示状态

* @param showType: 枚举类型 PSDrawerManagerShowType

*/

- (void)resetShowType:(PSDrawerManagerShowType)showType;


Demo展示:




Demo地址:https://github.com/slipawayleaon/PSDrawerManager


热门文章

神解释:向外行介绍程序员工作的复杂程度

史上最坑程序员,把整个公司删没了

据说,年薪百万的程序员,都是这么开悟的

知道这20个正则表达式,能让你少写1000行代码

程序员“从入门到跑路”全系列畅销书,欢迎阅读!

你在公司项目里面看到过哪些操蛋的代码?

资深程序员是如何用五年时间攒够100万的

不懂技术的人不要对懂技术的人说这很容易实现

史上最内涵的程序员笑话,你能看懂几个?

GitHub 中国区前 100 名到底是什么样的人?




小编推荐:[掘金]是一个高质量的技术社区,从 Swift 到 React Native,性能优化到动效源码,让你不错过 iOS 开发的每一个技术干货。长按图片二维码识别或者各大应用市场搜索「掘金」,技术干货尽在掌握中。



微信号:CocoaChinabbs


▲长按二维码“识别”关注即可免费学习 iOS 开发

月薪十万、出任CEO、赢娶白富美、走上人生巅峰不是梦

--------------------------------------

商务合作QQ:645047738

投稿邮箱:[email protected]