iOS开发中动画的各种类型及方法总结

1.UIImage Animation图片动画

#define FPS 30.0
- (void)viewDidLoad
{
    [super viewDidLoad];
    UIImage *image = [UIImage animatedImageNamed:
@"ship-anim" duration:5*1/FPS];
    self.imageView.image = image;
}


2.NSTimer 计时器实现动画的方式

2.1基本方法:

#define FPS 30.0
- (void)viewDidLoad
{
   [super viewDidLoad];
   self.count = 0;
   self.imageView.alpha = 0;
   //使用1/FPS计算出每一帧花费多长时间
   [NSTimer scheduledTimerWithTimeInterval:1/FPS target:self selector:@selector(changeAlpha:) userInfo:nil repeats:YES];
}
-(void)changeAlpha:(NSTimer *)timer{
   self.count++;
   //计算出每一帧需要修改的alpha值
   self.imageView.alpha+=1/(FPS*5);
   //根据完成动画的所有帧数决定
   //停止计时器
   if(self.count==FPS*5){
   [timer invalidate];
   NSLog(@".....");
    }
}

2.2NStimer Animation 飞机飞行

#define FPS 30.0// 帧率
#define DURATION 2.0 // 动画时长
- (void)viewDidLoad
{
    [super viewDidLoad];
    self.startCenter = self.imageView.center;
    self.count = 0;
}
- (IBAction)start:(UIButton *)sender {
    [NSTimer scheduledTimerWithTimeInterval:1/FPS target:self selector:@selector(move:) userInfo:nil repeats:YES];
}
//每一帧都来执行move方法,修改图片的中心点
//匀速动画:当前值 = 开始值+当前帧数*(结束值-开始值)/(帧率*动画时长)
-(void)move:(NSTimer *)timer{
    self.count++;
    CGPoint center = self.imageView.center;
    center.y = self.startCenter.y + self.count*(70-self.startCenter.y)/(FPS*DURATION);
    self.imageView.center = center;
    if(self.count >= FPS*DURATION){
        [timer invalidate];
    }
}

2.3变速公式

- (IBAction)start:(id)sender {
    [NSTimer scheduledTimerWithTimeInterval:1/FPS target:self selector:@selector(move:) userInfo:nil repeats:YES];
}
//变速公式:
//当前值= 上一次的值+(目标值-上一次的值)*渐进因子
-(void)move:(NSTimer *)timer{
    CGPoint center = self.imageView.center;
    center.y = center.y+(70-center.y)*0.08;
    self.imageView.center = center;
    if(center.y<=70){
        [timer invalidate];
    }
}

3.UIView Aniamtion

 3.1基本方法

- (IBAction)start:(id)sender {
    CGPoint center = self.imageView.center;
    center.y = 70;
    [UIView animateWithDuration:3 animations:^{
        //此处只要设定要被添加动画的视图 动画结束时的状态是什么
        self.imageView.center  = center;
    }];
}

3.2其他方法

- (void)viewDidLoad
{
    [super viewDidLoad];
    //先记录此刻摆放的位置,作为
    //动画结束时的位置
    CGRect labelEndFrame = self.label.frame;
    CGRect imageViewEndFrame = self.imageView.frame;
    //设置动画前label的起始位置
    CGRect labelStartFrame = labelEndFrame;
    labelStartFrame.origin.x = -labelStartFrame.size.width;
    self.label.frame = labelStartFrame;
    CGRect imageViewStartFrame = imageViewEndFrame;
    imageViewStartFrame.origin.y = self.view.bounds.size.height;
    self.imageView.frame = imageViewStartFrame;
    //添加动画
    [UIView animateWithDuration:2 animations:^{
        //设置两个需要做动画的视图的结束位置
        self.label.frame = labelEndFrame;
        self.imageView.frame = imageViewEndFrame;
    }];
}
- (IBAction)move:(id)sender {
    CGPoint center = self.imageView.center;
    center.y -= 300;
    CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI);
    [UIView animateWithDuration:3 delay:0 options:UIViewAnimationOptionCurveEaseIn|UIViewAnimationOptionRepeat|UIViewAnimationOptionAutoreverse animations:^{
        self.imageView.center = center;
        self.imageView.transform = transform;
    } completion:nil];
}
时间: 2024-12-09 17:46:21

iOS开发中动画的各种类型及方法总结的相关文章

IOS开发中数据持久化的几种方法--NSUserDefaults

IOS开发中数据持久化的几种方法--NSUserDefaults IOS 开发中,经常会遇到需要把一些数据保存在本地的情况,那么这个时候我们有以下几种可以选择的方案: 一.使用NSUserDefault是最简单直接的一个办法: 1)保存数据: 1 // 实例化一个NSUserDefaults单例对象 2 NSUserDefaults *user = [NSUserDefaults standardUserDefaults]; 3 // 把一个数组array保存在key为allContact的键值

iOS开发之动画编程的几种方法

iOS开发之动画编程的几种方法 IOS中的动画总结来说有五种:UIView<block>,CAAnimation<CABasicAnimation,CATransition,CAKeyframeAnimation>,NSTimer 这里我就总结了一下这五种方法,其实iOS开发中动画的编程都会在这里面变化,所以只要弄懂了这些动画编程就不难了. 一:UIView动画 一般方式 [UIView beginAnimations:@"ddd" context:nil];/

ios开发中动画那点事

一:UIKit动画 在介绍CoreAnimation动画前先简单介绍一下UIKit动画,大部分简单的动画都可以使用UIKit动画实现,如果想实现更复杂的效果,则需要使用Core Animation了,Core Animation中包含了可以实现更为复杂的基础动画和关键帧动画等等.UIKit动画有两种写法,它不仅可以针对视图还可以针对其它控件. 1:第一种写法是利用属性,结合beginAnimations.commitAnimations -(void)animationOfUIKit { UIV

iOS开发中UIDatePicker控件的使用方法简介

iOS上的选择时间日期的控件是这样的,左边是时间和日期混合,右边是单纯的日期模式. 您可以选择自己需要的模式,Time, Date,Date and Time  , Count Down Timer四种模式. 本篇文章简单介绍下PickerDate控件的使用1.新建一个Singe View Application,命名为DatePickDemo,其他设置如图 2.放置控件打开ViewController.xib,拖拽一个DatePicker控件放到界面上,再拖拽一个Button控件放到界面上,双

IOS开发中UILabel自适应大小显示的方法

1,根据label中的文字内容自动换行显示的方法 1>,认识两个属性 @property(nonatomic) NSInteger numberOfLines; @property(nonatomic) NSLineBreakMode lineBreakMode; 其中NSLineBreakMode为枚举类型 typedef NS_ENUM(NSInteger, NSLineBreakMode) { /* What to do with long lines */ NSLineBreakByWo

【Swift】IOS开发中自定义转场动画

在IOS开发中,我们model另外一个控制器的时候,一般都使用的自定义的转场动画. 其实我们可以自定义一些转场动画.达到不同的转场效果. 步骤如下:(photoBrowser是目标控制器) 1.在源控制器中,设置目标控制器的转场代理为 self 1 //设置Model转场代理 2  photoBrowser.transitioningDelegate = self 2.同时设置目标控制器的model类型 1 //设置Model类型 2 photoBrowser.modalPresentation

文顶顶 iOS开发UI篇—iOS开发中三种简单的动画设置

iOS开发UI篇—iOS开发中三种简单的动画设置 [在ios开发中,动画是廉价的] 一.首尾式动画 代码示例: // beginAnimations表示此后的代码要“参与到”动画中 [UIView beginAnimations:nil context:nil]; //设置动画时长 [UIView setAnimationDuration:2.0]; self.headImageView.bounds = rect; // commitAnimations,将beginAnimation之后的所

iOS开发UI篇—iOS开发中三种简单的动画设置

iOS开发UI篇—iOS开发中三种简单的动画设置 [在ios开发中,动画是廉价的] 一.首尾式动画 代码示例: // beginAnimations表示此后的代码要“参与到”动画中 [UIView beginAnimations:nil context:nil]; //设置动画时长 [UIView setAnimationDuration:2.0]; self.headImageView.bounds = rect; // commitAnimations,将beginAnimation之后的所

iOS开发中三种简单的动画设置

iOS开发中三种简单的动画设置 [在ios开发中,动画是廉价的] 一.首尾式动画 代码示例: // beginAnimations表示此后的代码要“参与到”动画中 [UIView beginAnimations:nil context:nil]; //设置动画时长 [UIView setAnimationDuration:2.0]; self.headImageView.bounds = rect; // commitAnimations,将beginAnimation之后的所有动画提交并生成动