IOS9任务管理器特效的实现

IOS9中通过双击home键可以打开任务管理器,和以前版本不一样的地方时这这次使用的3D的特效,见下图:

那么如何在我们的APP中也制作出这样的特效呢?在GItHub上有一个iCarousel第三方框架供我们使用。以下是我在这个库的基础上学习任务管理器特效的过程。

一、简单实现功能:

1、先下载iCarousel的框架,下载好之后随便保存在什么地方都行,只要你能找到就OK。

2、新建一个IOS项目,然后在项目文件中点击添加一个Group,命名为iCarousel,然后右键添加文件,找到1中下载的iCarousel的文件中的iCarousel.h和iCarousel.m这两个文件,并导入。

3、在新建项目中原有的ViewController.m中使用#import导入iCarousel.h。然后在- (void)viewDidLoad {}函数中增加如下语句:

 //新建1个iCarousel对象并初始化
iCarousel *icar = [[iCarousel alloc]initWithFrame:CGRectMake(, , , )];
//设置iCarousel的类型为时间机器型
icar.type = iCarouselTypeTimeMachine;
//设置数据源和代理
icar.delegate = self;
icar.dataSource = self; //把创建好的iCarousel对象添加到当前View
[self.view addSubview:icar];

以上就完成了iCarousel对象的创建及初始化、添加到当前View等工作。接下来看iCarousel的数据源和代理方法,在Xcode中按住Command然后点击上面代码中的iCarousel,会跳转到iCarousel.h文件中,代码如下:

 @protocol iCarouselDataSource, iCarouselDelegate;

 @interface iCarousel : UIView

 @property (nonatomic, weak_delegate) IBOutlet __nullable id<iCarouselDataSource> dataSource;
@property (nonatomic, weak_delegate) IBOutlet __nullable id<iCarouselDelegate> delegate;

可以看到iCarousel的代理是iCarouselDataSource和iCarouselDelegate,同样安住Command然后点击iCarouselDataSource,跳转到如下代码:

 @protocol iCarouselDataSource <NSObject>

 - (NSInteger)numberOfItemsInCarousel:(iCarousel *)carousel;
- (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSInteger)index reusingView:(nullable UIView *)view; @optional - (NSInteger)numberOfPlaceholdersInCarousel:(iCarousel *)carousel;
- (UIView *)carousel:(iCarousel *)carousel placeholderViewAtIndex:(NSInteger)index reusingView:(nullable UIView *)view; @end

可见这个协议中有四个方法需要实现,其中前两个是必须要实现的,后两个是可以选择实现,接下来我们仔细看看发现,第一个方法根据字面意思看是反悔iCarousel中元素的个数,第二个方法则是返回一个UIView,参数中有Index什么的,这时候如果以前用过UITableView就会想到,iCarousel和UITableView有点像,接下来我们把这两个方法复制到我们的程序中,并实现它:

 - (NSInteger)numberOfItemsInCarousel:(iCarousel *)carousel{
// 返回Item的个数
return ;
}
- (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSInteger)index reusingView:(nullable UIView *)view{
// 初始化view并在上面添加元素
if (view==nil) {
view = [[UIView alloc]initWithFrame:CGRectMake(, , , )];
view.backgroundColor = [UIColor redColor];
view.contentMode = UIViewContentModeCenter;
UILabel *label = [[UILabel alloc] initWithFrame:view.bounds];
label.text = @"这是iCarousel练习";
label.textAlignment = NSTextAlignmentCenter;
[view addSubview:label];
}
return view;
}

完成了以上代码,我们就可以尝试运行看看有没有效果了:

虽然看起来不好看,但是通过这一步最基本的功能已经实现了,以后再研究如何让它更美观。

IOS9任务管理器特效的实现的更多相关文章

  1. 如何轻松实现iOS9多任务管理器效果(iCarousel高级教程)

    前言 iOS9系统下 为了我司APP的兼容性问题 特意把手上的iOS Mac XCode都升级到了最新的beta版 然后发现iOS9的多任务管理器风格大变 变成了下面这种样子 我忽然想起来之前的文章提 ...

  2. Vue-Router 页面正在加载特效

    Vue-Router 页面正在加载特效 如果你在使用 Vue.js 和 Vue-Router 开发单页面应用.因为每个页面都是一个 Vue 组件,你需要从服务器端请求数据,然后再让 Vue 引擎来渲染 ...

  3. Carousel 旋转画廊特效的疑难杂症

    疑难杂症 该画廊特效的特点就是前后元素有层级关系. 我想很多人应该看过或者用过这个插件carousel.js,网上也有相关的教程.不知道这个插件的原型是哪个,有知道的朋友可以告诉我. 该插件相对完美, ...

  4. jQuery可拖拽3D万花筒旋转特效

    这是一个使用了CSS3立体效果的强大特效,本特效使用jQuery跟CSS3 transform来实现在用户鼠标按下拖动时,环形图片墙可以跟随鼠标进行3D旋转动画. 效果体验:http://hovert ...

  5. 基于jQuery左右滑动切换特效 附源码

    分享一款基于脚jQuery左右滑动切换特效.这是一款鼠标点击左右箭头按钮图片滚动切换,鼠标移到图片上显示透明边框特效.   效果图如下:   废话不多说,代码奉上!   html代码: <div ...

  6. iOS9支付宝无法调起客户端

    1.为了适配 iOS9.0 中的 App Transport Security(ATS)对 http 的限制,这里需要对 支付宝的请求地址 alipay.com 做例外,在 app 对应的 info. ...

  7. js,jquery,css,html5特效

    包含js,jquery,css,html5特效,源代码 本文地址:http://www.cnblogs.com/roucheng/p/texiao.html 2017新年快乐特效 jQuery最新最全 ...

  8. 原生js可爱糖果数字时间特效

    效果展示:http://hovertree.com/texiao/js/35/ 数字采用漂亮的糖果皮肤设计 效果图: 代码如下: <!DOCTYPE html> <html> ...

  9. jQuery+CSS3文字跑马灯特效

    jQuery+CSS3文字跑马灯特效是一款将跑马灯背景制作为3D立方体效果,文字在上面移动时,就像是文字投影到墙壁上,在转角出会改变运动方向. 效果展示 http://hovertree.com/te ...

随机推荐

  1. AJAX(XMLHttpRequest)进行跨域请求方法详解(二)

    注意:以下代码请在Firefox 3.5.Chrome 3.0.Safari 4之后的版本中进行测试.IE8的实现方法与其他浏览不同. 2,预检请求 预检请求首先需要向另外一个域名的资源发送一个 HT ...

  2. Cisco 绑定mac地址

    在Cisco中有以下三种方案可供选择,方案1和方案2实现的功能是一样的,即在具体的交换机端口上绑定特定的主机的MAC地址(网卡硬件地址),方案3是在具体的交换机端口上同时绑定特定的主机的MAC地址(网 ...

  3. 老问题:Android子线程中更新UI的3种方法

    在Android项目中经常有碰到这样的问题,在子线程中完成耗时操作之后要更新UI,下面就自己经历的一些项目总结一下更新的方法: 方法一:用Handler 1.主线程中定义Handler: Handle ...

  4. Kali渗透测试学习

    http://blog.chinaunix.net/uid-26349264-id-4041727.html

  5. Ubuntu 14.04 使用MyEclipse 10.7 闪退解决

    http://www.linuxidc.com/Linux/2014-05/101750.htm

  6. unity3d 多人寻路堵塞堆叠问题

    使用unity提供的NavMeshAgent寻路,当有多个agent一起寻路时总会出现堵塞堆叠的问题. 本人使用了一个非常粗劣简单的方案解决此问题,当然跟魔兽的寻路完全没得比,但保证有比较好的性能,且 ...

  7. 在CentOS中安装jenkins

    一.检查java是否安装 $ java -version java version "1.6.0_22" OpenJDK Runtime Environment (IcedTea6 ...

  8. Android网络开发之OkHttp--基本用法GET

    1.OkHttp框架使用了OkIo.jar包,不要忘记添加. 2.对于Request对象是如何实例化的,大家可以参考--java builder设计模式 http://www.cnblogs.com/ ...

  9. PHP中的ORM

    周末找个时间好好写一写 ORM相关的东西,整理整理. 参考:http://www.cnblogs.com/52fhy/p/5353181.html http://www.cnblogs.com/52f ...

  10. 创建git密钥的时候提示 too many arguments

    这个时候只要这样做就ok了, 给邮箱包两层引号,如下: " 'zhangsanfeng@qq.com' " 妥妥的!