1、常用属性:

frame   bounds   center   alpha    Transition 过渡    transform 动画效果

2、常用方法:

+(void)setAnimationDelegate:(id)delegate;

+(void)setAnimationWillStartSelector:(SEL)selector; 当动画结束的时候,执行delegate对象的selector,并且把beginAnimations:context:中传入的参数传进selector

+ (void)setAnimationDidStopSelector:(SEL)selector;  当动画结束时,执行delegate对象的selector,并且把beginAnimations:context:中传入的参数传进selector

+ (void)setAnimationDuration:(NSTimeInterval)duration;   动画的持续时间,秒为单位

+ (void)setAnimationDelay:(NSTimeInterval)delay;  动画延迟delay秒后再开始

+ (void)setAnimationStartDate:(NSDate *)startDate;   动画的开始时间,默认为now

+ (void)setAnimationCurve:(UIViewAnimationCurve)curve;  动画的节奏控制(过渡)

+ (void)setAnimationRepeatCount:(float)repeatCount;  动画的重复次数

+ (void)setAnimationRepeatAutoreverses:(BOOL)repeatAutoreverses;  如果设置为YES,代表动画每次重复执行的效果会跟上一次相反

+ (void)setAnimationTransition:(UIViewAnimationTransition)transition forView:(UIView *)view cache:(BOOL)cache;  设置视图view的过渡效果, transition指定过渡类型, cache设置YES代表使用视图缓存,性能较好

 #import "ViewController.h"

 @interface ViewController ()
{
UIImageView *imageView;
}
@end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad]; imageView = [[UIImageView alloc]initWithFrame:self.view.frame];
imageView.image = [UIImage imageNamed:@"7.jpg"];
// imageView.contentMode = UIViewContentModeScaleAspectFit;
[self.view addSubview:imageView]; UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(, , , );
button.center = self.view.center;
button.backgroundColor = [UIColor brownColor];
[button addTarget:self action:@selector(viewAnimation3) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button]; } #pragma mark -- 1、frame bounds center alpha ---
- (void)viewAnimation1 {
#pragma mark - 方法1
// 在一段时间内 执行完命令
// [UIView animateWithDuration:3 animations:^{
// imageView.alpha = 0.5;
// }]; #pragma mark - 方法2
// 开始动画
[UIView beginAnimations:@"animation" context:nil]; // 这只动画的持续时间
[UIView setAnimationDuration:]; // ..... 动画效果
imageView.alpha = 0.5;
imageView.bounds = CGRectMake(, , , );
imageView.center = CGPointMake(, );
// imageView.frame = CGRectMake(100, 100, 100, 100); // 提交动画 会去执行动画
[UIView commitAnimations];
} #pragma mark - 2、Transition
/*
typedef NS_ENUM(NSInteger, UIViewAnimationTransition) {
UIViewAnimationTransitionNone,
UIViewAnimationTransitionFlipFromLeft, 从左面翻转
UIViewAnimationTransitionFlipFromRight,从右面翻转
UIViewAnimationTransitionCurlUp, 向上翻页
UIViewAnimationTransitionCurlDown,向下翻页
};
*/
- (void)viewAnimation2 {
// 开始动画
[UIView beginAnimations:nil context:nil];
// 设置动画持续时间
// [UIView setAnimationDuration:3];
// 设置 UIView 的过渡动画
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:imageView cache:YES]; #pragma mark - 3、UIViewAnimationCurve
/*
typedef NS_ENUM(NSInteger, UIViewAnimationCurve) {
UIViewAnimationCurveEaseInOut, // slow at beginning and end 慢进慢出
UIViewAnimationCurveEaseIn, // slow at beginning 快进
UIViewAnimationCurveEaseOut, // slow at end 快出
UIViewAnimationCurveLinear 匀速
};
*/
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
// 设置 代理(检测动画结束)
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(finishAnimation)];
// 提交动画
[UIView commitAnimations]; } // 动画结束之后触发的方法
- (void)finishAnimation {
[UIView beginAnimations:@"o" context:nil];
[UIView setAnimationDuration:];
imageView.alpha = 0.1;
imageView.bounds = CGRectZero;
imageView.center = CGPointMake(, ); [UIView commitAnimations];
} #pragma mark - 4、transform
/*
imageView.transform=CGAffineTransformScale(imageView.transform, 0.5, 0.5); // 实现的是放大和缩小imageView.transform=CGAffineTransformRotate(imageView.transform, M_PI_4); //实现的是旋转 imageView.transform=CGAffineTransformTranslate(imageView.transform, 20, 0); //实现的是平移
*/
- (void)viewAnimation3 { [UIView beginAnimations:@"animation" context:nil];
[UIView setAnimationDuration:];
// transform 如果没有还原transform 他会保持 改变后的模样
imageView.transform = CGAffineTransformScale(imageView.transform, 0.5, 0.5); [UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(restore)];
[UIView commitAnimations]; } - (void)restore {
[UIView animateWithDuration: animations:^{
imageView.transform = CGAffineTransformIdentity; }];
}

模拟器效果截图:

方法一效果图:

方法二效果图:

方法三效果图:

最新文章

  1. ffmpeg基础
  2. .net 实现Office文件预览,word文件在线预览、excel文件在线预览、ppt文件在线预览
  3. php使用位与运算符【&】位或运算符【|】实现权限管理
  4. pandas进行数据分析需要的一些操作
  5. window IIS6/IIS7取消脚本执行权限,禁止运行脚本木马
  6. jsp的常用指令有哪些(编译指令/动作指令整理)
  7. Hibernate查询效率对比
  8. SOCI、LiteSQL、POCO数据库访问类库对比
  9. cocos2d-x 3.0 Armature jsb 初体验
  10. Java压缩技术的学习
  11. [Android FrameWork 6.0源码学习] ViewGroup的addView函数分析
  12. 双边滤波算法的简易实现bilateralFilter
  13. Android给控件添加默认点击效果
  14. PHP中的__call和__callStatic方法
  15. unity加载ab后,场景shader不起效问题(物件表现黑色)
  16. 信用评分及模型原理解析(以P2P网贷为例)
  17. 发送消息-配置app_id
  18. 【LG1368】工艺
  19. 我们为何放弃Eclipse,投奔IntelliJ IDEA
  20. Lua语法基础(1)---简介、基本数据类型、表达式

热门文章

  1. dedecms二级导航标签调用使用的方法
  2. yii-basic-app-2.0.5/basic/config/web.php
  3. robots.txt的介绍和写作
  4. CSS DIV HOVER
  5. 使用jquery获取url及url参数的方法及定义JQuery扩展方法
  6. sed 指令
  7. 最流行的编程语言JavaScript能做什么?
  8. POJ 1061 青蛙的约会(扩展欧几里得)
  9. html基础之 input:type
  10. 《javascript dom编程艺术》笔记(二)——美术馆示例
  11. gradle 使用总结
  12. RAID磁盘阵列及CentOS7系统启动流程(week2_day3)--技术流ken
  13. python数组相关知识
  14. selenium的browser.page_source无法返回页面内容
  15. eclipse启动报错:Could not create the java virtual machine
  16. 洛谷P2303 [SDOi2012] Longge的问题 数论
  17. Java多线程-----volatile关键字详解
  18. 通俗大白话来理解TCP协议的三次握手和四次断开
  19. 使用 vue-cli 实现组件之间数据交换
  20. python的 del 函数是删对象还是删引用