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. Intent之间无法传递大数据的替代方法

    /** * TODO: Activity之间传递list,对象等工具类 * * @author * @date 2014-9-12 下午5:35:38 * @version 0.1.0 */ publ ...

  2. LISTVIEW嵌套GRIDVIEW的一些处理(点击GRIDVIEW的条目,能够显示他在LISTVIEW中的位置)(对这篇文章的优化处理,不每次都new onItemClickListener)

    前几天写了点击GRIDVIEW的条目,能够显示他在LISTVIEW中的位置,当时的处理是在ListView的适配器里的GetView方法里每次都new GridView的onItemClickList ...

  3. PHP程序员学习路线

    注:本文是@黑夜路人的旧文,假设PHP程序员基础不是非常扎实,简单梳理了每个阶段PHP程序员的技术要求,来帮助很多PHP程序做对照设定学习成长目标.再次分享,共勉,欢迎补充. 第一阶段:基础阶段(基础 ...

  4. Linux批量替换文本,文件夹内所有文本内容

    1.替换文件夹内所有文件匹配的字符串 sed -i "s/旧内容/新内容/g" `grep 旧内容 -rl 文件夹路径` 例如将/var/www/test文件夹下的所有文件内容中的 ...

  5. usb调试

    修改文件:/home/mxy/code/v1/kernel-3.10/drivers/power/mediatek/battery_common.c //bool AutoDebug=true;//x ...

  6. zf-启动项目报错Server 127.0.0.1 has no instance named dlx 解决办法

    由于百度出来的看不明白,于是我就在群里问,吴善如经理说:你这个问题我上次给李宽看过,用端口连,把instance去掉 然后我去掉之后 项目过程能够成功运行了,原来是这样

  7. JS读RSS

    <html>  <head>   <title>javascript读取RSS数据</title>   <META content="t ...

  8. drawRect 进阶

    iOS的绘图操作是在UIView类的drawRect方法中完成的,所以如果我们要想在一个UIView中绘图,需要写一个扩展UIView 的类,并重写drawRect方法,在这里进行绘图操作,程序会自动 ...

  9. Commons Codec基本使用(转载)

    在实际的应用中,我们经常需要对字符串进行编解码,Apache Commons家族中的Commons Codec就提供了一些公共的编解码实现,比如Base64, Hex, MD5,Phonetic an ...

  10. openjdk

    apt-get install mercurial hg clone http://hg.openjdk.java.net/jdk8u/jdk8u20/ jdk8u20 ./get_source.sh