目录
- 定时器动画效果(形变,缩放,平移,时时旋转,时时缩放,时时平移)
- block动画效果 (改变视图的frame,背景颜色,透明度,视图的形变)
定时器动画效果
- 1.添加一个定时器,实现动画效果
[NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(ytTransform:) userInfo:@"aaa" repeats:YES];
形变
- 旋转、缩放、平移都是对视图的同一个属性进行设置,后设置的属性会覆盖之前设置的属性
1.旋转(当前视图上的子视图也会跟着一起旋转)
- 参数:角度(pi对应的角度)
- M_PI_2 pi/2 (M_PI == π)
[view1 setTransform:CGAffineTransformMakeRotation(M_PI)];
2.缩放(当前视图的子视图也会一起缩放)
- 参数1:x方向的缩放比例
- 参数2:y方向的缩放比例
[view1 setTransform:CGAffineTransformMakeScale(1, 1)];
3.平移
- 参数1:在x方向平移单位 (为正向右移,为负向左移)
- 参数2:在y方向上的平移单位 (为正向下移,为负向上移)
[view1 setTransform:CGAffineTransformMakeTranslation(0, 0)];
4.时时旋转
- 使用静态变量存储上一次结束的时候视图的旋转角度
static float rotation = M_PI;
- 获取需要旋转的视图
每0.1秒让视图的旋转角度增加pi/10
[view setTransform:CGAffineTransformMakeRotation(rotation + M_PI/10)];
- 保存当前视图的旋转角度
rotation += M_PI/10;
5.时时缩放
static float scale = 1;
static float scaleValue = 1;
//时时缩放
[view setTransform:CGAffineTransformMakeScale(scale + (0.2)*scaleValue, scale + (0.2)*scaleValue)];
缩放后更新缩放当前的比例
scale += 0.2 * scaleValue;
当缩放比例大于4的时候让比例减小
if (scale >= 4) {
scaleValue = -1;
}
当缩放比例小于0.2的时候让比例增加
if (scale < 0.2) {
scaleValue = 1;
}
6.时时平移
static float translation = 0;
static float translationValue = 1;
[view setTransform:CGAffineTransformMakeTranslation(translation + 10 * translationValue, 0)];
.
//更新当前平移的距离
translation += 10 * translationValue;
if (view.frame.origin.x <= 0) {
translationValue = 1;
}
if (view.frame.origin.x >= _window.frame.size.width - view
.frame.size.width) {
translationValue = -1;
}
- 功能:动态的改变视图的frame\形变\颜色和透明度
参数1:动画时间
参数2:block,用来实现动画结果的代码段
[UIView animateWithDuration:0.3 animations:^{
//动画结果
}];
block动画效果
参数1:动画时间
参数2:block,用来实现动画结果的代码段
参数3:block,动画结束后需要执行的代码段
[UIView animateWithDuration:0.3 animations:^{
//动画结果
} completion:^(BOOL finished) {
//finished:是否结束
//动画结束后执行的代码段
}];
=====================================
1.创建一个视图
UIView * view = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
view.backgroundColor = [UIColor redColor];
[self.window addSubview:view];
```
2.使用动画
```objc
[UIView animateWithDuration:1 animations:^{
使用动画效果改变视图的frame
view.frame = CGRectMake(100, 500, 100, 100);
使用动画效果改变视图的背景色
view.backgroundColor = [UIColor blackColor];
使用动画效果改变视图的透明度
透明度:0 - 1 (改变父视图的透明度,子视图的透明度会跟着改变;如果只想改变父视图透明,就改变父视图背景颜色的透明度)
view.alpha = 0.2;
使用动画效果改变视图的形变
view.transform = CGAffineTransformMakeScale(0.5, 0.5);
}];
[UIView animateWithDuration:0.5 animations:^{
//动画结果
view.transform = CGAffineTransformMakeScale(0.2, 0.2);
} completion:^(BOOL finished) {
//动画结束后移除视图
NSLog(@"动画结束");
[view removeFromSuperview];
//变小的动画结束后,再变回去
[UIView animateWithDuration:1.5 animations:^{
view.transform = CGAffineTransformMakeScale(1, 1);
}];
}];