UIView 实现动画

参考这个帖子,主要讲了用UIView来实现动画。

http://www.tuicool.com/articles/BjMrQne

其中比较好用的

(一)代码块,此处实现了滑块的平移

    UIView *v = [[UIView alloc]initWithFrame:CGRectMake(100, 100, 200, 200)];
    v.backgroundColor = [UIColor redColor];
    [self.view addSubview:v];
    [UIView animateWithDuration:1 animations:^{
        CGPoint p = v.center;
        p.y += 100;
        v.center = p;
    } completion:^(BOOL finished) {
        CGPoint p = v.center;
        p.y -= 100;
        v.center = p;
    }];

(二)连续动画帧,这个感觉还是比较麻烦的

   UIView *v = [[UIView alloc]initWithFrame:CGRectMake(100, 100, 200, 200)];
    void (^keyFrameBlock)() = ^(){
        // 创建颜色数组
        NSArray *arrayColors = @[[UIColor orangeColor],
                                 [UIColor yellowColor],
                                 [UIColor greenColor],
                                 [UIColor blueColor],
                                 [UIColor purpleColor],
                                 [UIColor redColor]];
        NSUInteger colorCount = [arrayColors count];
        // 循环添加关键帧
        for (NSUInteger i = 0; i < colorCount; i++) {
            [UIView addKeyframeWithRelativeStartTime:i / (CGFloat)colorCount
                                    relativeDuration:1 / (CGFloat)colorCount
                                          animations:^{
                                              [v setBackgroundColor:arrayColors[i]];
                                          }];
        }
    };
    [UIView animateKeyframesWithDuration:4.0
                                   delay:0.0
                                 options:UIViewKeyframeAnimationOptionCalculationModeCubic | UIViewAnimationOptionCurveLinear
                              animations:keyFrameBlock
                              completion:^(BOOL finished) {
                                  // 动画完成后执行
                                  // code...
                              }];
    

(三)图片帧动画,这个在其他地方看到,好用且简单(通过动画更新图片的显示,再加上定时器去设置图片的显示位置)

 //动画的原理:在短时间内播放足够多的图片.
    //形成动画的最小要求:24帧/秒
    UIImage *image = [UIImage imageNamed:@"DOVE 1"];

    //创建一个显示图片视图
    UIImageView *birdView = [[UIImageView alloc]initWithFrame:CGRectMake(10, 150, image.size.width, image.size.height)];

    [self.window addSubview:birdView];

    NSMutableArray *birds = [NSMutableArray array];

    for (int i = 1; i<19; i++) {
        NSString *string = [NSString stringWithFormat:@"DOVE %i",i];
        UIImage *subImage = [UIImage imageNamed:string];

        [birds addObject:subImage];
    }

    //将所有的鸟图片添加到显示图片视图
    [birdView setAnimationImages:birds];
    //动画持续时间
    [birdView setAnimationDuration:0.5];
    //设置动画重复次数  默认是1次   0代表无数次
    [birdView setAnimationRepeatCount:0];

    //开启动画
    [birdView startAnimating];

     birdView.tag = 20;

    //使用定时器让鸟移动
    /*
     1.间隔时间
     2.方法对应的对象
     3.调用的方法
     4.附加信息
     5.是否重复执行
     */
    [NSTimer scheduledTimerWithTimeInterval:1/60. target:self selector:@selector(birdsFly:) userInfo:birdView repeats:YES];

}

-(void)birdsFly:(NSTimer *)timer{
    //通过视图的tag取出子视图
//    UIImageView *birdView = (UIImageView *)[self.window viewWithTag:20];
    //方法二:利用NStimer的userInfo属性
    UIImageView *birdView = timer.userInfo;
    //语法错误
//    birdView.frame.origin.x = 4;
    CGRect frame = birdView.frame;

    frame.origin.x += 2;

    if (birdView.frame.origin.x >= 320) {
        frame.origin.x = -birdView.frame.size.width;
    }

    //整体赋值是可以的
    birdView.frame = frame;
}
时间: 2024-10-13 16:35:27

UIView 实现动画的相关文章

IOS开发-UIView之动画效果的实现方法(合集)

http://www.cnblogs.com/GarveyCalvin/p/4193963.html 前言:在开发APP中,我们会经常使用到动画效果.使用动画可以让我们的APP更酷更炫,最重要的是优化用户体验,但取决于动画的质量.像QQ.微信.新浪微博等APP,动画效果就很好了,至少我很喜欢它们的动画,让我使用起来感觉很顺畅,心情很开朗.本文会介绍UIView效果的实现方法,非核心动画. 一.使用UIView类实现动画 基本写法,代码必须放在Begin和Commit之间: [UIView beg

iOS开发——动画编程Swift篇&amp;(一)UIView基本动画

UIView基本动画 1 // MARK: - UIView动画 ------------------------------------- 2 3 // MARK: - UIView动画-淡入 4 @IBAction func simpleAnimationFadeIn() 5 { 6 UIView.beginAnimations(nil, context: nil) 7 UIView.setAnimationDuration(2.0)//设置动画时间 8 testImageView.alph

ios uiview封装动画(摘录)

iOS开发UI篇—核心动画(UIView封装动画) 一.UIView动画(首尾) 1.简单说明 UIKit直接将动画集成到UIView类中,当内部的一些属性发生改变时,UIView将为这些改变提供动画支持 执行动画所需要的工作由UIView类自动完成,但仍要在希望执行动画时通知视图,为此需要将改变属性的代码放在[UIView beginAnimations:nil context:nil]和[UIView commitAnimations]之间 常见方法解析: + (void)setAnimat

用layer添加UIView的动画

项目有时会遇到用UIView 添加动画的情况,这里我觉得在layer上添加动画比较好,因为可以详细地设定动画属性,方便理解 下面是一个旋转动画: -(void)roundBtnAction:(id)sender {            UIButton * button = (UIButton *)sender;        //Animation自旋转(layer动画):    CABasicAnimation* rotationAnimation;        rotationAnim

IOS UIVIEW layer动画 总结

转发自:http://www.aichengxu.com/article/%CF%B5%CD%B3%D3%C5%BB%AF/16306_12.html IOS UIVIEW layer动画 总结,有需要的朋友可以参考下. 这是我搜索的所有动画效果,感谢前辈在网上分享. //翻页效果动画 左边 [UIView beginAnimations:@"animation" context:nil]; [UIView setAnimationDuration:1.0f]; [UIView set

iOS开发UI篇—核心动画(UIView封装动画)(转摘)

iOS开发UI篇—核心动画(UIView封装动画) 一.UIView动画(首尾) 1.简单说明 UIKit直接将动画集成到UIView类中,当内部的一些属性发生改变时,UIView将为这些改变提供动画支持 执行动画所需要的工作由UIView类自动完成,但仍要在希望执行动画时通知视图,为此需要将改变属性的代码放在[UIViewbeginAnimations:nil context:nil]和[UIView commitAnimations]之间 常见方法解析: + (void)setAnimati

如何停止和扭转UIView的动画

本文转载至  http://codego.net/576089/ 我有它收缩时碰到切换按钮UIView的动画跳和它扩展恢复到原来的大小当再次接触到按钮.密封式前大灯一切都工作得很好.问题是,动画师注意到-例如3秒钟.在此期间,我还是希望能够进行交互的接口.当再次接触到跳跃键,而动画仍在进行中的动画应该就停在哪里是和反向. 在苹果Q&正如我已经找到了方法,所有的动画 但我没有看到从这里扭转动画(并省略原动画的其余部分)的方式.我该怎么办呢? - (IBAction)toggleMeter:(id)

UIView的动画

// //  ViewController.m //  UI-NO.6 // //  Created by Bruce on 15/7/20. //  Copyright (c) 2015年 Bruce. All rights reserved. // #import "ViewController.h" @interface ViewController () { UIImageView *animationView; NSMutableArray *imageList; } @en

UI控件之UIView与动画

UIView:用来展示用户的界面,响应用户的操作(继承自UIResponder) UIView的作用:绘图.动画.处理事件 UIView可以包含和管理子视图,并且决定子视图的位置大小 获取所有的子视图(数组) NSArray *subViews= self.window.subviews; 将子视图放在某个子视图上面 [self.window insertSubview:greenView aboveSubview:yellowView]; 将子视图放在某个子视图下面 [self.window

iOS开发UI篇—核心动画(UIView封装动画)

一.UIView动画(首尾) 1.简单说明 UIKit直接将动画集成到UIView类中,当内部的一些属性发生改变时,UIView将为这些改变提供动画支持 执行动画所需要的工作由UIView类自动完成,但仍要在希望执行动画时通知视图,为此需要将改变属性的代码放在[UIView beginAnimations:nil context:nil]和[UIView commitAnimations]之间 常见方法解析: + (void)setAnimationDelegate:(id)delegate