設定動畫CABasicAnimation的屬性和說明動畫
屬性 | 說明 |
---|---|
duration | 動畫的時間 |
repeatCount | 重複的次數。不停重複設置爲 HUGE_VALF |
repeatDuration | 設置動畫的時間。 |
beginTime | 指定動畫開始的時間。從開始延遲幾秒的話,設置爲【CACurrentMediaTime() + 秒數】 的方式 |
timingFunction | 設置動畫的速度變化 |
autoreverses | 動畫結束時是否執行逆動畫 |
fromValue | 所改變屬性的起始值 |
toValue | 所改變屬性的結束時的值 |
byValue | 所改變屬性相同起始值的改變量 |
//建立一個image viewspa
UIImageView *imageview=[[UIImageView alloc]init];orm
imageview.image=[UIImage imageNamed:@"logo.png"];事件
imageview.frame=CGRectMake(50, 50, imageview.image.size.width, imageview.image.size.height);圖片
[self.view addSubview:imageview];ci
//動畫關鍵字熟悉設置說明 rem
值 | 說明 | 使用形式 |
---|---|---|
transform.scale | 比例轉化 | @(0.8) |
transform.scale.x | 寬的比例 | @(0.8) |
transform.scale.y | 高的比例 | @(0.8) |
transform.rotation.x | 圍繞x軸旋轉 | @(M_PI) |
transform.rotation.y | 圍繞y軸旋轉 | @(M_PI) |
transform.rotation.z | 圍繞z軸旋轉 | @(M_PI) |
cornerRadius | 圓角的設置 | @(50) |
backgroundColor | 背景顏色的變化 | (id)[UIColor purpleColor].CGColor |
bounds | 大小,中心不變 | [NSValue valueWithCGRect:CGRectMake(0, 0, 200, 200)]; |
position | 位置(中心點的改變) | [NSValue valueWithCGPoint:CGPointMake(300, 300)]; |
contents | 內容,好比UIImageView的圖片 | imageAnima.toValue = (id)[UIImage imageNamed:@"to"].CGImage; |
opacity | 透明度 | @(0.7) |
contentsRect.size.width | 橫向拉伸縮放 | @(0.4)最好是0~1之間的 |
//1.移動animation
CABasicAnimation *animate=[CABasicAnimation animationWithKeyPath:@"position"];it
//動畫持續時間io
animate.duration=2;
animate.repeatDuration=2;
//重複的次數。不停重複設置爲 HUGE_VALF
animate.repeatCount=HUGE_VALF;
//動畫結束時是否執行逆動畫
animate.autoreverses=YES;
//指定動畫開始的時間
animate.beginTime=CACurrentMediaTime()+2;
//用CABasicAnimation執行動畫,在動畫結束後會迴歸動畫開始前的狀態。想要解決的話,必須設置「removedOnCompletion」和「fillMode」這兩個屬性
animate.removedOnCompletion=NO;
animate.fillMode=kCAFillModeForwards;
animate.fromValue=[NSValue valueWithCGPoint:imageview.layer.position];
animate.toValue=[NSValue valueWithCGPoint:CGPointMake(200, 200)];
//設置動畫的速度變化
animate.timingFunction=[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
//視圖添加動畫
[imageview.layer addAnimation:animate forKey:@"move-layer"];
//2.旋轉
CABasicAnimation *secondAnimate=[CABasicAnimation animationWithKeyPath:@"transform.rotation.y"];
secondAnimate.duration=2;
secondAnimate.repeatCount=10;
secondAnimate.beginTime=CACurrentMediaTime()+2;
secondAnimate.fromValue=[NSNumber numberWithFloat:0.0];
secondAnimate.toValue=[NSNumber numberWithFloat:M_PI];
//設置動畫的速度變化
secondAnimate.timingFunction=[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
[imageview.layer addAnimation:secondAnimate forKey:@"rotate-layer"];
//3.縮放
CABasicAnimation *scaleAnimate=[CABasicAnimation animationWithKeyPath:@"transform.scale"];
scaleAnimate.duration=2;
scaleAnimate.repeatCount=2;
scaleAnimate.fromValue=[NSNumber numberWithFloat:1.0];
scaleAnimate.toValue=[NSNumber numberWithFloat:2.0];
//設置動畫的速度變化
scaleAnimate.timingFunction=[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
[imageview.layer addAnimation:scaleAnimate forKey:@"scale-layer"];
//4.漸隱動畫
CABasicAnimation *opacityAnimate=[CABasicAnimation animationWithKeyPath:@"opacity"];
opacityAnimate.duration=2;
opacityAnimate.repeatCount=2;
opacityAnimate.fromValue=[NSNumber numberWithFloat:0.0];
opacityAnimate.toValue=[NSNumber numberWithFloat:1.0];
[imageview.layer addAnimation:opacityAnimate forKey:@"opacity-layer"];
//5.組合動畫
CAAnimationGroup *group=[CAAnimationGroup animation];
group.duration=2;
group.repeatCount=2;
group.animations=[NSArray arrayWithObjects:animate,secondAnimate, nil];
[imageview.layer addAnimation:group forKey:@"group-layer"];
//6.捕獲動畫開始時和終了時的事件
//爲了獲取動畫的開始和結束事件,須要實現協議
animate.delegate=self;
- (void)animationDidStart:(CAAnimation *)theAnimation {
//動畫開始了
}
- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag {
//動畫結束了
}