动画总结(UIView的动画)
Main.storyboard

ViewController.m
//
// ViewController.m
// 8A08.动画总结
//
// Created by huan on 16/2/6.
// Copyright © 2016年 huanxi. All rights reserved.
//
#import "ViewController.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
//打印中心点 position anchorPoint
#warning 默认图层的"position" 就是“控件”的中心点
NSLog(@"中心点 %@", NSStringFromCGPoint(self.imageView.center));
NSLog(@"position %@", NSStringFromCGPoint(self.imageView.layer.position));
NSLog(@"anchorPoint %@", NSStringFromCGPoint(self.imageView.layer.anchorPoint));
}
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
//动画总结
// [self test1];
// [self test2];
// [self test3];
// [self test4];
}
//1. UIView动画
-(void)test1{
[UIView beginAnimations:nil context:nil];
//设置时间
[UIView setAnimationDuration:3];
//监听动画的完成
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(stop)];
//实现动画代码
self.imageView.center = CGPointMake(200, 200);
[UIView commitAnimations];
}
//2.UIView的block动画
-(void)stop{
NSLog(@"%s", __func__);
}
-(void)test2{
[UIView animateWithDuration:3 animations:^{
self.imageView.center = CGPointMake(200, 200);
} completion:^(BOOL finished) {
NSLog(@"动画完成");
}];
}
//3.UIView的转场动画
-(void)test3{
// UIViewAnimationOptionTransitionNone = 0 << 20, // default
// UIViewAnimationOptionTransitionFlipFromLeft = 1 << 20,
// UIViewAnimationOptionTransitionFlipFromRight = 2 << 20,
// UIViewAnimationOptionTransitionCurlUp = 3 << 20,
// UIViewAnimationOptionTransitionCurlDown = 4 << 20,
// UIViewAnimationOptionTransitionCrossDissolve = 5 << 20,
// UIViewAnimationOptionTransitionFlipFromTop = 6 << 20,
// UIViewAnimationOptionTransitionFlipFromBottom = 7 << 20,
[UIView transitionWithView:self.imageView duration:3 options:UIViewAnimationOptionTransitionFlipFromLeft animations:^{
//更改图片
self.imageView.image = [UIImage imageNamed:@"2.jpg"];
} completion:^(BOOL finished) {
NSLog(@"动画完成");
}];
}
//核心动画 核心动画是一个假象
-(void)test4{
// self.imageView.image = [UIImage imageNamed:@"2.jpg"];
// //转场动画
// CATransition *animation = [CATransition animation];
// animation.type = @"push";
//
// [self.imageView.layer addAnimation:animation forKey:nil];
//核心动画是一个假象 给你一个效果(效果之后就恢复)
//平移动画
CABasicAnimation *positionAni = [CABasicAnimation animation];
positionAni.keyPath = @"position";
NSLog(@"核心动画之前的position %@", NSStringFromCGPoint(self.imageView.layer.position));
positionAni.toValue = [NSValue valueWithCGPoint:CGPointMake(200, 300)];
//核心动画 要监听动画完成 设置代理
#warning 核心动画的代理是NSObject的分类,所以不需要遵守协议
positionAni.delegate = self;
[self.imageView.layer addAnimation:positionAni forKey:nil];
}
#pragma mark 核心动画的代理
-(void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag{
// NSLog(@"动画完成");
NSLog(@"核心动画之后的position %@", NSStringFromCGPoint(self.imageView.layer.position));
}
@end
动画总结(UIView的动画)的更多相关文章
- iOS动画-从UIView到Core Animation
		首先,介绍一下UIView相关的动画. UIView普通动画: [UIView beginAnimations: context:]; [UIView commitAnimations]; 动画属性设 ... 
- IOS 动画专题   --iOS核心动画
		iOS开发系列--让你的应用“动”起来 --iOS核心动画 概览 通过核心动画创建基础动画.关键帧动画.动画组.转场动画,如何通过UIView的装饰方法对这些动画操作进行简化等.在今天的文章里您可以看 ... 
- iOS开发UI篇—核心动画(UIView封装动画)
		iOS开发UI篇—核心动画(UIView封装动画) 一.UIView动画(首尾) 1.简单说明 UIKit直接将动画集成到UIView类中,当内部的一些属性发生改变时,UIView将为这些改变提供动画 ... 
- 核心动画与UIView的区别
		核心动画与UIView的区别 1.核心动画只作用于layer,使用核心动画之前,必须有layer 2.核心动画只是假象,并没有移动实际位置 什么时候使用核心动画,什么时候使用UIView动画 1.当不 ... 
- 核心动画和UIView动画的区别
		核心动画和UIView动画的区别 1.核心动画制作用在Layer 2.核心动画的修改的属性都是假象,他的真实位置没有发生变化() 
- UIView简单动画
		UIView动态实现的效果有以下几种: 1.动态改变frame 2.动态改变color 3.动态改变alpha 4.动态改变bounds 首先,我们先看几种BasicView动画 #pragma ma ... 
- ios  uiview封装动画(摘录)
		iOS开发UI篇—核心动画(UIView封装动画) 一.UIView动画(首尾) 1.简单说明 UIKit直接将动画集成到UIView类中,当内部的一些属性发生改变时,UIView将为这些改变提供动画 ... 
- iOS开发——动画编程Swift篇&(一)UIView基本动画
		UIView基本动画 // MARK: - UIView动画 ------------------------------------- // MARK: - UIView动画-淡入 @IBActio ... 
- IOS UIVIEW layer动画 总结(转)
		转发自:http://www.aichengxu.com/article/%CF%B5%CD%B3%D3%C5%BB%AF/16306_12.html IOS UIVIEW layer动画 总结, ... 
随机推荐
- nullcon HackIM 2016 -- Crypto Question 1
			You are in this GAME. A critical mission, and you are surrounded by the beauties, ready to shed thei ... 
- Python学习之路——基础篇(1)字符串格式化
			字符串格式化 Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存. 百分号方式 ... 
- tesseract-ocr
			tesseract-ocr 第一课 前言 据网上介绍tesseract-ocr性能不错,并且可以支持识别中文了.于是尝试一下. 安装 1.下载地址: https://code.google.com ... 
- 试一下SVG
			用鼠标点击那个圆形试试 function changeCircle() { var c = document.getElementById("mycircle"); c.setAt ... 
- Brophp框架开发时连接数据库读取UTF8乱码的解决(转)
			Brophp框架开发时连接数据库读取UTF8乱码的解决办法 (2012-09-15 10:41:22) 转载▼ 标签: 杂谈 it php 分类: 建站技术 Brophp框架开发时连接数据库读取UTF ... 
- auth用户认证库
			关于auth库,建议如下:1. ion_auth,基于Redux重写而成,非常不错的认证库,国外用的很多,几个最新的ci2.0.2基础上的开源系统(如doveforum)都用它,支持ci 2.0和以上 ... 
- 修改Arduino串口缓冲区大小(转)
			本帖节选自<Arduino程序设计基础>第二版5.1.6串口缓冲区 在之前的示例程序中,我们都是采用人工输入测试数据的方式检验程序效果,Arduino每接收到一次数据,就会将数 ... 
- Linux下错误的捕获:全局变量errno和strerror()
			经常在调用linux 系统api 的时候会出现一些错误,比方说使用open() write() creat()之类的函数有些时候会返回-1,也就是调用失败,这个时候往往需要知道失败的原因.这个时候使用 ... 
- 一个简单xml数据转换为数组的方法
			本人用easywechat做微信回复图文,从数据库中拿到的数据直接是xml拼好的数据,但是框架只有自带的获取xml格式的语句,所有需要将xml数据中所需要的数据拿出来用来拼接. 搜了好多资料说的都很麻 ... 
- DOS基本命令及其详解
			指令格式:命令 选项 参数命令:要求计算机做某操作,可以是系统中的某个可执行程序,也可以是内存中的某函数.接口.别名等.如果是可执行程序,默认要带路径执行,除非该路径配置在环境变量path中.选项:表 ... 
