zoukankan      html  css  js  c++  java
  • IOS9任务管理器特效的实现

    IOS9任务管理器特效的实现

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

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

    一、简单实现功能:

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

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

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

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

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

    1 @protocol iCarouselDataSource, iCarouselDelegate;
    2 
    3 @interface iCarousel : UIView
    4 
    5 @property (nonatomic, weak_delegate) IBOutlet __nullable id<iCarouselDataSource> dataSource;
    6 @property (nonatomic, weak_delegate) IBOutlet __nullable id<iCarouselDelegate> delegate;

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

     1 @protocol iCarouselDataSource <NSObject>
     2 
     3 - (NSInteger)numberOfItemsInCarousel:(iCarousel *)carousel;
     4 - (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSInteger)index reusingView:(nullable UIView *)view;
     5 
     6 @optional
     7 
     8 - (NSInteger)numberOfPlaceholdersInCarousel:(iCarousel *)carousel;
     9 - (UIView *)carousel:(iCarousel *)carousel placeholderViewAtIndex:(NSInteger)index reusingView:(nullable UIView *)view;
    10 
    11 @end

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

     1 - (NSInteger)numberOfItemsInCarousel:(iCarousel *)carousel{
     2 //    返回Item的个数
     3     return 10;
     4 }
     5 - (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSInteger)index reusingView:(nullable UIView *)view{
     6 //    初始化view并在上面添加元素
     7     if (view==nil) {
     8         view = [[UIView alloc]initWithFrame:CGRectMake(100, 100, 214, 214)];
     9         view.backgroundColor = [UIColor redColor];
    10         view.contentMode = UIViewContentModeCenter;
    11         UILabel  *label = [[UILabel alloc] initWithFrame:view.bounds];
    12         label.text = @"这是iCarousel练习";
    13         label.textAlignment = NSTextAlignmentCenter;
    14         [view addSubview:label];
    15     }
    16     return view;
    17 }

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

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

  • 相关阅读:
    移动端rem屏幕设置
    封装ajax库,post请求
    获取浏览器url参数
    身份证验证
    jq封装插件
    页面分享功能,分享好友、朋友圈判断,用share_type做标记 这里用的是jweixin-1.3.2.js
    @RequestParam和@RequestBody区别
    400报错
    IDEA中用Maven构建SSM项目环境入门
    Eclipse搭建Spring开发环境
  • 原文地址:https://www.cnblogs.com/jiwangbujiu/p/5461279.html
Copyright © 2011-2022 走看看