iOS常用的幾個動畫代碼
使用前需引入QuartzCore.framework, 并在相關文件中加入 #import "QuartzCore/QuartzCore.h"定義
shakeFeedbackOverlay為UIImageView設置
self.shakeFeedbackOverlay.alpha = 0.0; self.shakeFeedbackOverlay.layer.cornerRadius = 10.0; //設置圓角半徑1、圖像左右抖動
CABasicAnimation* shake = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"]; shake.fromValue = [NSNumber numberWithFloat:-M_PI/32]; shake.toValue = [NSNumber numberWithFloat:+M_PI/32]; shake.duration = 0.1; shake.autoreverses = YES; //是否重復 shake.repeatCount = 4; [self.shakeFeedbackOverlay.layer addAnimation:shake forKey:@"shakeAnimation"]; self.shakeFeedbackOverlay.alpha = 1.0; [UIView animateWithDuration:2.0 delay:0.0 options:UIViewAnimationOptionCurveEaseIn | UIViewAnimationOptionAllowUserInteraction animations:^{ self.shakeFeedbackOverlay.alpha = 0.0; //透明度變0則消失 } completion:nil];2、圖像順時針旋轉
CABasicAnimation* shake = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"]; shake.fromValue = [NSNumber numberWithFloat:0]; shake.toValue = [NSNumber numberWithFloat:2*M_PI]; shake.duration = 0.8; shake.autoreverses = NO; shake.repeatCount = 1; [self.shakeFeedbackOverlay.layer addAnimation:shake forKey:@"shakeAnimation"]; self.shakeFeedbackOverlay.alpha = 1.0; [UIView animateWithDuration:10.0 delay:0.0 options:UIViewAnimationOptionCurveEaseIn | UIViewAnimationOptionAllowUserInteraction animations:^{ self.shakeFeedbackOverlay.alpha = 0.0; } completion:nil];3、圖像關鍵幀動畫
CAKeyframeAnimation *animation = [CAKeyframeAnimation animation]; CGMutablePathRef aPath = CGPathCreateMutable(); CGPathMoveToPoint(aPath, nil, 20, 20); CGPathAddCurveToPoint(aPath, nil, 160, 30, 220, 220, 240, 420); animation.path = aPath; animation.autoreverses = YES; animation.duration = 2; animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]; animation.rotationMode = @"auto"; [ballView.layer addAnimation:animation forKey:@"position"];4、組合動畫 CAAnimationGroup
CABasicAnimation *flip = [CABasicAnimation animationWithKeyPath:@"transform.rotation.y"]; flip.toValue = [NSNumbernumberWithDouble:-M_PI]; CABasicAnimation *scale= [CABasicAnimation animationWithKeyPath:@"transform.scale"]; scale.toValue = [NSNumbernumberWithDouble:12]; scale.duration = 1.5; scale.autoreverses = YES; CAAnimationGroup *group = [CAAnimationGroup animation]; group.animations = [NSArray arrayWithObjects:flip, scale, nil]; group.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; group.duration = 3; group.fillMode = kCAFillModeForwards; group.removedOnCompletion = NO; [ballView.layer addAnimation:group forKey:@"position"];5、指定時間內旋轉圖片
//啟動定時器旋轉光圈
- (void)startRotate
{
self.rotateTimer = [NSTimer scheduledTimerWithTimeInterval:0.02
target:self
selector:@selector(rotateGraduation)
userInfo:nil
repeats:YES];
}
//關閉定時器
- (void)stopTimer
{
if ([self.rotateTimerisValid])
{
[self.rotateTimerinvalidate];
self.rotateTimer = nil;
}
}
//旋轉動畫
- (void)rotateGraduation
{
self.timeCount--;
if (self.timeCount == 0)
{
[self stopTimer];
// doSomeThing //旋轉完畢 可以干點別的
self.timeCount = 25;
}
else
{
//計算角度 旋轉
static CGFloat radian = 150 * (M_2_PI / 360);
CGAffineTransform transformTmp = self.lightImageView.transform;
transformTmp = CGAffineTransformRotate(transformTmp, radian);
self.lightImageView.transform = transformTmp;
};
}
調用方法
self.timeCount = 25; //動畫執行25次
[self startRotate];</pre>
本文由用戶 dw2d 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!