iOS中的时钟动画

  iOS 动画效果非常多,我们在开发中可能会遇到很多动画特效,我们就会用到核心动画框架CoreAnimation,核心动画里面的动画效果有很多,都是在QuartzCore.framework框架里面,今天我们看看其只一个CADisplayLink使用,并且完成一个雪花效果:

  效果图如下:

1、引入框架

  2、引入头文件

  CADisplayLink最主要的特征是能提供一个周期性的调用我们赋给它的selector的机制,从这点上看它很像定时器NSTimer。

  CADisplayLink是一个能让我们以和屏幕刷新率同步的频率将特定的内容画到屏幕上的定时器类。 CADisplayLink以特定模式注册到runloop后, 每当屏幕显示内容刷新结束的时候,runloop就会向 CADisplayLink指定的target发送一次指定的selector消息, CADisplayLink类对应的selector就会被调用一次。

  NSTimer以指定的模式注册到runloop后,每当设定的周期时间到达后,runloop会向指定的target发送一次指定的selector消息。

3 声明成员变量

@interface ViewController ()

/*  定义对象**/
@property(nonatomic,strong) CADisplayLink * link;

/*  定义整数索引用来控制执行的次数**/
@property(nonatomic,assign) NSInteger index;

/*  设置要显示的图片**/
@property(nonatomic,strong) UIImage * image;

@end

  4、对成员变量进行初始化

- (void)viewDidLoad {
    [super viewDidLoad];

    //初始化图片
    self.image=[UIImage imageNamed:@"snow.png"];
    self.view.backgroundColor=[UIColor blackColor];
    //初始化时钟动画
    self.link=[CADisplayLink displayLinkWithTarget:self selector:@selector(show)];

    //加入到主循环
    [self.link addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];

}

  5、动画执行产生雪花

#pragma mark - 显示雪花
- (void)show{

    //时钟大约每秒执行60次数,我们需要控制每秒显示10片雪花
    if (self.index%6==0) {

        //随机雪花的大小
        NSInteger r= arc4random_uniform(20)+10;

        UIImageView * imageView=[[UIImageView alloc]initWithFrame:CGRectMake(arc4random_uniform(375), -r, r, r)];
        imageView.image=self.image;
        [self.view addSubview:imageView];
        //动画改变雪花的位置
        [UIView animateWithDuration:arc4random_uniform(3)+7 animations:^{
            imageView.frame=CGRectMake(arc4random_uniform(375), 667+arc4random_uniform(170), r, r);
            //改变雪花的透明度
            imageView.alpha=0.3;
            //让雪花旋转
            imageView.transform=CGAffineTransformMakeRotation(M_PI);
        } completion:^(BOOL finished) {
            //结束后一定要移除雪花
            [imageView removeFromSuperview];
        }];

    }

    self.index++;
}

作者:杰瑞教育
出处:http://www.cnblogs.com/jerehedu/ 
版权声明:本文版权归烟台杰瑞教育科技有限公司和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

技术咨询:

时间: 2024-11-16 02:12:22

iOS中的时钟动画的相关文章

iOS中UIImageView帧动画相关属性和方法

@property(nonatomic,copy)NSArray *animationImages; 需要播放的序列图片数组(里面都是UIImage对象,会按顺序显示里面的图片) @property(nonatomic)NSTimeInterval animationDuration; 帧动画的持续时间 @property(nonatomic)NSInteger animationRepeatCount; 帧动画的执行次数(默认是无限循环) - (void)startAnimating; 开始执

iOS中动画理解

iOS 中5种动画 1.0 UIView 动画; 1 UIImageView *imageView1 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"page1.png"]]; 2 imageView1.backgroundColor = [UIColor redColor]; 3 imageView1.frame = CGRectMake(0, 0, 100, 200); 4 [self.view addSubvi

IOS开发系列 --- 核心动画

原始地址:http://www.cnblogs.com/kenshincui/p/3972100.html 概览 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌.在这里你可以看到iOS中如何使用图层精简非交互式绘图,如何通过核心动画创建基础动画.关键帧动画.动画组.转场动画,如何通过UIView的装饰方法对这些动画操作进行简化等.在今天的文章里您可以看到动画操作在iOS中是如何简单和高效,很多原来想做但是苦于没有思路的动画在iOS中将变得越发简

iOS中Animation 动画 UI_22

1.iOS中我们能看到的控件都是UIView的子类,比如UIButton UILabel UITextField UIImageView等等 2.UIView能够在屏幕的显示是因为在创建它的时候内部自动添加一个CALayer图层,通过这个图层在屏幕上显示的时候会调用一个drawRect: 的方法,完成绘图,才能在屏幕上显示 3.CALayer 本身就具有显示功能,但是它不能响应用户的交互事件,如果只是单纯的显示一个图形,此时你可以使用CALayer创建或者是使用UIView创建,但是如果这个图形

iOS中动画的简单使用

//***简单动画 [UIView animateWithDuration:3 animations:^{ //      _animationView.center = CGPointMake(arc4random()%320, arc4random()%480);//改变中心点 //      _animationView.frame = CGRectMake(arc4random()%320, arc4random()%480,arc4random()%320, arc4random()%

iOS中的动画

什么是动画,动画其实就是我们看到的画面变化的一个过程 那么在iOS中,实现一个最简单的动画需要几步呢? a Simple animation { // 1.开启动画 [UIViewbeginAnimations:nilcontext:nil]; [UIViewsetAnimationDuration:2.0]; // 2.修改属性 CGRect tempF = self.head.frame; tempF.origin.x += 50; tempF.origin.y += 100; tempF.

ios中layer动画和UIView动画代码总结

kCATransitionFade淡出 kCATransitionMoveIn覆盖原图 kCATransitionPush推出 kCATransitionReveal底部显出来 pageCurl   向上翻一页 pageUnCurl 向下翻一页 rippleEffect 滴水效果 suckEffect 收缩效果,如一块布被抽走 cube 立方体效果 oglFlip 上下翻转效果 #pragma mark UIView 动画 - (IBAction)pressClick1:(id)sender {

ios开发-UI进阶-核心动画-时钟动画小案例

[注意]转载时请注明出处博客园-吃唐僧肉的小悟空http://www.cnblogs.com/hukezhu/ 今天使用CALayer的"定位点(锚点)"实现了一个时钟动画,其实就是一个小的时钟,只是实现了功能,没有做出绚丽的效果.使用UIView实现的,其实只是单纯的使用layer也可以实现.主要用到了 Quartz2D画图\ 事件处理\核心动画方面的知识. 代码不是很多,直接附上源码,注释比较详细,在源码后面再进行解释其中的一些知识点和注意点. 下图为应用截图,使用gif,没有制作

iOS中关于动画效果的要点

在系统并深入学习iOS动画的过程中,不得不说是个痛苦的过程.没有任何书系统的讲解这方面的知识,网上的文章都讲的支离破碎:很幸运的看到了http://objccn.io这个网站:即使如此,还是花了三天时间:这个是对整体概念模糊到不断清晰,再逐步理顺,最后总结归纳为几个关键点.我想这辈子应该都忘记不了了. iOS上的动画效果绝对赞:最常见的uitable动态效果,当手指在屏幕上下滑动时,列表会跟随其一起上下活动:如果猛的往上一推,还可以看到列表的惯性作用下,还会不断滚动,同时慢慢减速.这个过程根本不