ios开发核心动画七:核心动画与UIView动画的区别

/**
  UIView与核心动画区别?(掌握)

   1.核心动画只作用在layer.
   2.核心动画看到的都是假像,它并没有去修改UIView的真实位置.

   什么时候使用核心动画?
   1.当不需要与用户进行交互,使用核心动画
   2.当要根据路径做动画时,使用核心动画:CABasicAnimation,CAKeyFrameAnimation,两个都可以根据绘制的路径UIBizerPath来绘制路径来执行动画
   3.当做转场动画时, 使用核心动画 (核心动画转场类型比较多)CATrasition或是UIView的核心动画

 */

#import "ViewController.h"

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIView *redView;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    NSLog(@"%@",NSStringFromCGRect(self.redView.frame));

}

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {

//    CABasicAnimation *anim = [CABasicAnimation animation];
//    anim.keyPath = @"position.y";
//    anim.toValue = @400;
//    anim.removedOnCompletion = NO;
//    anim.duration = 1;
//    anim.fillMode = kCAFillModeForwards;
//    anim.delegate = self;
//    [self.redView.layer addAnimation:anim forKey:nil];

    [UIView animateWithDuration:0.5 animations:^{

        self.redView.center = CGPointMake(50, 400);

    }completion:^(BOOL finished) {
         NSLog(@"%@",NSStringFromCGRect(self.redView.frame));
    }];

}

//动画开始时执行
-(void)animationDidStart:(CAAnimation *)anim {
    //NSLog(@"%s",__func__);
}

//动画完成时执行
-(void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag {
    //NSLog(@"%s",__func__);
  //  NSLog(@"finished==%@",NSStringFromCGRect(self.redView.frame));
}

@end

1.UIView和核心动画区别?

核心动画只能添加到CALayer

核心动画一切都是假象,并不会改变真实的值。

2.什么时候使用UIView的动画?

如果需要与用户交互就使用UIView的动画.

不需要与用户交互可以使用核心动画

3.什么场景使用核心动画最多?

在转场动画中,核心动画的类型比较多

根据一个路径做动画,只能用核心动画(帧动画)

动画组:同时做多个动画

时间: 09-02

ios开发核心动画七:核心动画与UIView动画的区别的相关文章

iOS开发——仿淘宝添加到购物车的动画效果实现

这篇博文实在不知道该起什么名字才能概况我的意思...挫语文水平 类似于淘宝一样,我们在写一些购物.订餐之类的app的时候,在用户选择购买或者加入购物车时可以添加一个商品飞到购物车中的动画效果,如下图所示: 实现这个效果还是不算难的,但涉及的问题比较多,还是挺有学习价值的.主要面对的问题有以下几点 1.cell中有button,如何获得该button,即如何知道用户点击的是哪一个button. 2.坐标系的转换,这里频繁使用坐标系转换,主要原因是这里需要涉及三个视图--cell.tableView

IOS开发学习笔记-(3) 进度条、等待动画开始停止

一.创建对应空间视图  ,如下图: 二.编写对应的 .h 代码,如下 : #import <UIKit/UIKit.h> @interface ViewController : UIViewController @property (weak, nonatomic) IBOutlet UIActivityIndicatorView *activWaitNetWork; @property (weak, nonatomic) IBOutlet UIProgressView *pgrsDownLo

ios开发——仿新版iBooks书本打开与关闭动画

IOS新版iBooks吸引人的地方除了有干净整洁的界面.方便灵活的操作以及大容量的书籍容量以外,还有其优秀的用户交互,尤其是其动画的使用.打开一本书时书本缓慢放大并打开,关闭一本书后书本关闭并回到原位置.现在我们来实现这个简单的功能. 效果图: 用到的知识: 1.CAKeyframeAnimation的应用 2.如何在代理中区分两个不同的动画 3.坐标系转换 思路: 这个动画主要用到的是CAAnimation,并且是CAKeyframeAnimation,当用户点击书本时,设置一个UIImage

ios开发之图层与核心动画一:图层CALayer的认识

#import "ViewController.h" @interface ViewController () @property (weak, nonatomic) IBOutlet UIView *redView; @property (weak, nonatomic) IBOutlet UIImageView *imageV; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]

iOS开发UI篇----UI基础之Tom猫动画

#import "ViewController.h" @interface ViewController () @property (weak, nonatomic) IBOutlet UIImageView *imageView; // 定义字典读取plist文件 @property (nonatomic, strong) NSDictionary *imageCountDict; @end @implementation ViewController // 懒加载, 重写get方法

iOS开发-UI基础-汤姆猫Tom(序列帧动画)

使用UIImageView和UIButton实现Tom小案例. 功能分析:点击对应按钮后,tom实现相应的动作和声音 步骤分析: 搭建UI界面:(头部,肚子,尾巴,左脚和右脚使用的是button) 监听按钮点击 根据点击的按钮实现相应的序列帧动画 tom的动作就是一张一张的图片连续显示在屏幕上,实现动画有几种方式: 1.首尾式: //动画的开始 [UIView beginAnimations:nil context:nil]; //动画的内容 //提交动画(动画结束) [UIView commi

IOS开发知识(七)

进制 什么是进制 是一种计数的方式,数值的表示形式 数一下方块的个数 汉字:十一   十进制:11  二进制:1011  八进制:13 多种进制:十进制.二进制.八进制.十六进制.也就是说,同一个整数,我们至少有4种表示方式 软件开发,肯定要了解这个 二进制 特点:只有0和1,逢2进1 书写格式:0b或者0b开头 使用场合:二进制指令\二进制文件,变量在内存中就是二进制存储 二进制和十进制的互相转换 n为二进制位所能表示的数据范围(不考虑负数):0~2的n次方-1 八进制 特点:0~7,逢八进一

iOS 开发小记 (七)

最近要换地方工作了,整理下之前遇到的问题. 1.StatusBar View controller-based status bar appearance 状态栏属性设置后,plist修改后才有效. 2.Auto Layout Hugging priority 确定view有多大的优先级阻止自己变大. Compression Resistance priority确定有多大的优先级阻止自己变小. 简单来说,Hugging的收缩的意思,就是当有A,B两个元素连在一起,当他们的superView变大

iOS开发网络学习七:NSURLSession的基本使用get和post请求

#import "ViewController.h" @interface ViewController () @end @implementation ViewController -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { [self post]; } -(void)get { //1.确定URL NSURL *url = [NSURL URLWithStrin

IOS开发之功能模块--给任意的UIView添加点击事件

前言:好久没写博客,今天来一波.我在实际项目开发中,会遇到这样功能需求:我已经搭好了iOS的UI界面,但是很多界面的子View用了UIView,然后这些UIView中用了UILabel和UIImageView,然后接着需求要这些View能够有点击事件,比如一点击就跳转到某个控制器.一开始懵逼了,难道我还要把他们全部改成UIButton,但是UIButton不好添加子View,难道我还要全部自定义一下UIButton,就算自定义好了,在项目已经打好的界面还是要一个个替换,多麻烦.所以就想到通过UI