Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >iOS开发之抽屉效果实现

iOS开发之抽屉效果实现

作者头像
lizelu
发布于 2018-01-11 09:33:34
发布于 2018-01-11 09:33:34
2K00
代码可运行
举报
文章被收录于专栏:青玉伏案青玉伏案
运行总次数:0
代码可运行

  说道抽屉效果在iOS中比较有名的第三方类库就是PPRevealSideViewController。一说到第三方类库就自然而然的想到我们的CocoaPods,今天的博客中用CocoaPods引入PPRevealSideViewController,然后在我们的工程中以代码结合storyboard来做出抽屉效果。

  一.在工程中用CocoaPods引入第三方插件PPRevealSideViewController.

    (1).在终端中搜索PPRevealSideViewController的版本

    (2).在Podfile中添加相应的版本库

    (3).之后保存一下Podfile文件,然后执行pod install即可

  二、为我们的工程添加pch文件

    因为用的是XCode6, 上面默认是没有pch文件的,如果我们想使用pch文件,需要手动添加,添加步骤如下

    1.在XCode6中是么有pch文件的,如下图

    2.创建pch文件

    3.配置pch文件

      (1)、找工程的Targets->Build Settings->Apple LLVM 6.0 - Language

      (2)在Prefix Header下面的Debug和Release下添加$(SRCROOT)/工程名/pch文件,入下图

  三、使用PPRevealSideViewController来实现抽屉效果

    当然了首先在pch文件中引入我们的第三方类库,然后使用即可

    1.在storyboard拖出来我们要用的视图控制器,点击主界面上的按钮会以抽屉的形式展示出导航页,然后在导航页导航到各个界面,之后在从各个页面回到主界面

    2.在AppDelegate中初始化我们的PPRevealSideViewController并设置为启动页面代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
 2     // Override point for customization after application launch.
 3     
 4     self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
 5     
 6     //获取主视图的导航控制器
 7     UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
 8     UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"NavigationController"];
 9     
10     //新建PPRevealSideViewController,并设置根视图(主页面的导航视图)
11     PPRevealSideViewController *sideViewController = [[PPRevealSideViewController alloc] initWithRootViewController:vc];
12     
13     sideViewController.fakeiOS7StatusBarColor = [UIColor whiteColor];
14     
15     //把sideViewController设置成根视图控制器
16     self.window.rootViewController = sideViewController;
17     
18     [self.window makeKeyAndVisible];
19     
20     return YES;
21 }

    3.在主界面使用PPRevealSideViewController来推出导航页

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1 - (IBAction)tapItem:(id)sender {
2     
3     UIStoryboard *storybaord = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
4     UITableViewController *table = [storybaord instantiateViewControllerWithIdentifier:@"CustomViewViewController"];
5     [self.revealSideViewController pushViewController:table onDirection:PPRevealSideDirectionLeft animated:YES];
6 }

    4.在导航页点击不同的按钮使用PPRevealSideViewController跳转到不同的controller

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 - (IBAction)tap1:(id)sender {
 2      UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
 3     UIViewController *one = [storyboard instantiateViewControllerWithIdentifier:@"one"];
 4     [self.revealSideViewController popViewControllerWithNewCenterController:one animated:YES];
 5 }
 6 
 7 - (IBAction)tap2:(id)sender {
 8     
 9     UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
10     UIViewController *one = [storyboard instantiateViewControllerWithIdentifier:@"two"];
11     [self.revealSideViewController popViewControllerWithNewCenterController:one animated:YES];
12     
13 }
14 
15 - (IBAction)tap3:(id)sender {
16     UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
17     UIViewController *one = [storyboard instantiateViewControllerWithIdentifier:@"three"];
18     [self.revealSideViewController popViewControllerWithNewCenterController:one animated:YES];
19 }
20 
21 - (IBAction)tap4:(id)sender {
22     UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
23     UIViewController *one = [storyboard instantiateViewControllerWithIdentifier:@"four"];
24     [self.revealSideViewController popViewControllerWithNewCenterController:one animated:YES];
25 }

    5.各个页面返回到主界面的代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1 - (IBAction)tapPage:(id)sender {
2     UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
3     
4     UIViewController *view = [storyboard instantiateViewControllerWithIdentifier:@"NavigationController"];
5     
6     [self.revealSideViewController popViewControllerWithNewCenterController:view animated:YES];
7 }

  四.到此效果实现完毕,下面是效果图:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2014-10-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
IOS开发之获取Storyboard创建的ViewController
  前面的两篇博客都是学习有关屏幕适配也就是相对布局的东西,这篇博客中将会学习视图间的切换。视图间的切换我们可以用代码完成或者用storyboard来建立各个视图控制器间的关系。在需要用到代码进行切换时会用代码进行视图间的跳转。下面的东西我们会主要介绍到NavigationController来进行视图间的切换。下面也是和之前一样把代码和storyboard结合起来学习。   下面介绍一下我们要实现的功能和效果: App打开的第一个界面是登陆页面,登陆页面由用户名和密码以及一个登陆按钮构成。当登陆成功时会p
lizelu
2018/01/11
1.9K0
IOS开发之获取Storyboard创建的ViewController
IOS开发之记录用户登陆状态
  上一篇博客中提到了用CoreData来进行数据的持久化,CoreData的配置和使用步骤还是挺复杂的。但熟悉CoreData的使用流程后,CoreData还是蛮好用的。今天要说的是如何记录我们用户的登陆状态。例如微信,QQ等,在用户登陆后,关闭应用在打开就直接登陆了。那么我们在App开发中如何记录用户的登陆状态呢?之前在用PHP或者Java写B/S结构的东西的时候,我们用Session来存储用户的登陆信息,Session是存在服务器上仅在一次回话中有效,如果要记录用户的登陆状态,那么会用到一个叫Cook
lizelu
2018/01/11
1.6K0
IOS开发之记录用户登陆状态
IOS开发之TabBarItem&NavigationBarItem
  想必大家都用过微信,微信间的页面切换是如何做成的呢?接下来我们用storyboard结合着代码来模拟一下微信的视图控制模式。   "工欲善其事,必先利其器",下面主要是对storyboard来进行我们项目框架的搭建的,必要时,用代码实现我们的页面效果。在IOS开发中常用的多视图间的切换大致有TabBarController, NavigationBarController, 和模态窗口。第一次接触模态的概念是在Web前端的内容中接触的。下面将会结合一个实际的效果来简单的介绍一下TabBar和Naviga
lizelu
2018/01/11
1.5K0
IOS开发之TabBarItem&NavigationBarItem
iOS对UIViewController生命周期和属性方法的解析
        作为MVC设计模式中的C,Controller一直扮演着项目开发中最重要的角色,它是视图和数据的桥梁,通过它的管理,将数据有条有理的展示在我们的View层上。iOS中的UIViewController是UIKit框架中最基本的一个类。从第一个UI视图到复杂完整项目,都离不开UIViewController作为基础。基于UIViewController的封装和扩展,也能够出色的完成各种复杂界面逻辑。这篇博客,旨在讨论UIViewController的生命周期和属性方法,在最基础的东西上,往往会得到意想不到的惊喜。
珲少
2018/08/16
3.2K0
iOS对UIViewController生命周期和属性方法的解析
ios开发-载入viewcontroller的几种方式
Assuming you have storyboard, go to storyboard and give your VC an identifier (inspector), then do: UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; UIViewController *vc = [storyboard instantiateViewControllerWithI
阿新
2018/04/12
6750
iOS中 超简单抽屉效果(MMDrawerController)的实现
ios开发中,展示类应用通常要用到抽屉效果,由于项目需要,本人找到一个demo,缩减掉一些不常用的功能,整理出一个较短的实例。 首先需要给工程添加第三方类库
用户7108768
2021/10/29
1.7K0
IOS开发之新浪围脖
  IOS开发和Web开发一样,网络请求方式包括Get和Post方式。Get和Post两者有和特点和区别,在本篇博客中不做过多的论述,本篇的重点在于如何GET数据和POST数据。下面还会提到如何在我们的项目中使用CocoaPods, CocoaPods的安装和使用教程请参考链接http://code4app.com/article/cocoapods-install-usage。上面详细的介绍了CocoaPods的安装过程和如何通过CocoaPods引入第三方类库。在本篇博客中提到CocoaPods,是因为
lizelu
2018/01/11
1.4K0
IOS开发之新浪围脖
Xcode:处理故事板的更好方式 享受Interface Builder的提示和技巧
Apple在Xcode 8中对Interface Builder进行了很大的改进。使用大小类变得更加直观,缩放故事板的能力非常方便,Interface Builder中的完整预览功能非常棒。对于那些对使用Interface Builder犹豫不决的人来说,这可能会成为一个交易破坏者。
iOSDevLog
2018/12/28
1.6K0
iOS开发之浅谈MVVM的架构设计与团队协作
今天写这篇博客是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正。本篇博客的内容沿袭以往博客的风格,也是以干货为主。 由于本人项目经验有限,关于架构设计方面的东西理解有限,我个人对MVVM的理解主要是借鉴于之前的用过的MVC的Web框架~在学校的时候用过ThinkPHP框架,和SSH框架,都是MVC的架构模式,今天MVVM与传统的MVC可谓是极为相似,也可以说是兄弟关系,也就是一家人了。 说道架构设计和团队协作,这个对App的开发还是比较重要的。即使作为一个专业的搬砖者
lizelu
2018/01/11
1.3K0
iOS开发之浅谈MVVM的架构设计与团队协作
iOS 页面跳转的方式
modal方式 就相当于一个一个桌子 push方式 就相当于摞盘子 所以push方式 打开的页面在原页面的上面,关闭的时候也只能从上往下关,不能关闭中间的一个 而modal方式 如果一个桌子上放了一碟盘子 ,那么关闭这个桌子的话,上面的所有盘子也会关闭
码客说
2019/10/22
2.1K0
【IOS开发基础系列】Storyboard专题
        如果你的 app 有大量的窗口,故事板能帮你减少许多用于从一个窗口转到另一个窗口的导航代码。与每个viewcontroller一个单独的 nib 文件不同,你的 app 只需用一个故事板文件(其中可以包含所有的viewcontroller 以及它们之间的关系)即可。
江中散人_Jun
2023/10/16
2K0
【IOS开发基础系列】Storyboard专题
iOS开发无第三方控件的援助达到的效果侧边栏
最近的研究iOS程序侧边栏。渐渐的发现iOS该方案还开始采取风侧边栏格该,QQ,今日头条,Path(Path运营商最早的侧边栏app该,效果说成是Path效果),所以就研究了下。
全栈程序员站长
2022/07/06
4690
iOS开发无第三方控件的援助达到的效果侧边栏
Swift 书面 ToDo App
下面的代码是使用的全部Xcode Version 6.0.1 (6A317)书面。
全栈程序员站长
2022/07/06
1.7K0
Swift 书面 ToDo App
iOS14开发-UIViewController
UIViewController 可以理解为 App 的界面,负责管理 UIView 中显示的内容和用户的交互,主要有以下作用:
YungFan
2021/03/02
2.8K0
iOS开发之微信聊天页面实现
  在上篇博客(iOS开发之微信聊天工具栏的封装)中对微信聊天页面下方的工具栏进行了封装,本篇博客中就使用之前封装的工具栏来进行聊天页面的编写。在聊天页面中主要用到了TableView的知识,还有如何在俩天中显示我们发送的表情,具体请参考之前的博客:IOS开发之显示微博表情,在这儿就不做赘述啦。在聊天页面用到了三对,六种Cell,不过cell的复杂度要比之前的新浪微博(IOS开发之新浪围脖)简单的多。废话少说吧,还是先来几张效果图,在给出实现代码吧。   聊天界面的效果图如下:在下面的聊天界面中中用到了3类
lizelu
2018/01/11
4.4K0
iOS开发之微信聊天页面实现
iOS开发笔记(四)
前言 最近遇到一个苦恼的问题,寻找了漫长的时间才解决。 起因是项目需要fork一个新的分支到新的git,于是把代码复制到新的git,创建git库,然后推送,一切正常。 当我把target和工程的名字修改之后,出现了一下问题: CocoaPods did not set the base configuration of your project because your project already has a custom config set. In order for CocoaPods in
落影
2018/04/27
1.3K0
iOS开发笔记(四)
iOS-UIWindow详解
1.UIWindow简介 UIWindow是一种特殊的UIView,通常在一个app中至少会有一个UIWindow。 iOS程序启动完毕后,创建的第一个视图控件就是UIWindow,接着创建控制器的View,最后将控制器的View添加到UIWindow上,于是控制器的View就显示在屏幕上了。 一个iOS程序之所以能显示在屏幕上,完全是因为它有UIWindow,也就是说,没有UIWindow就看不到任何UI界面。 状态栏和键盘都是特殊的UIWindow。 那么UIWindow是如何将View显示到屏幕上的呢
xx_Cc
2018/05/10
2K0
编码篇-从一个第三方的StoryBoard项目中剥离部分功能到纯代码项目中
最近项目中需要实现视频监控功能,于是就用了某企业旗下的一款视频监控产品,在集成官方Dome中的监控画面播放的功能时,发现整个项目都是通过StoryBoard搭建的,然而我的项目是没有使用StoryBoard,纯代码开发,如果我用纯代码重写里面的功能逻辑当然也是行的,只是花费的时间和精力可想而知,这酸爽,谁试谁知道。
進无尽
2018/09/12
7580
编码篇-从一个第三方的StoryBoard项目中剥离部分功能到纯代码项目中
iOS开发之表视图爱上CoreData
  在接触到CoreData时,感觉就是苹果封装的一个ORM。CoreData负责在Model的实体和sqllite建立关联,数据模型的实体类就相当于Java中的JavaBean, 而CoreData的功能和JavaEE中的Hibernate的功能类似,最基本是两者都有通过对实体的操作来实现对数据库的CURD操作。CoreData中的上下文(managedObjectContext)就相当于Hibernate中的session对象, CoreData中的save操作就和Hibernate中的commit,还
lizelu
2018/01/11
2.4K0
iOS开发之表视图爱上CoreData
《iOS UI 开发捷径 利用 Interface Builder 高效、优雅地开发 UI》 读书笔记第1章 Interface Bundle 概要第2章 使用 Interface Builder第3
第1章 Interface Bundle 概要 ---- Bundle 一种标准化的层次结构,保存了可执行代码及代码所需要的资源。 nib Next Interface Builder Interface Builder 的优点 开发和维护效率高 减少大量的 UI 代码和“胶水代码” 适配变得十分简单 IB 也可以做一些非 UI 的事情 利用 IB 学习控件可以达到事半功倍的效果 Interface Builder 的缺点 IB 的执行效率没有纯代码高 使用 IB 开发的过程中容易出现一些小问题 有一定的学
iOSDevLog
2018/05/17
2.7K0
推荐阅读
相关推荐
IOS开发之获取Storyboard创建的ViewController
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验