#pragma mark -水平左右画面抖动效果
+ (void)shakeViewHorizontal:(UIView*)viewToShake
{
CGFloat t =2.0;
//左右抖动效果
CGAffineTransform translateRight =CGAffineTransformTranslate(CGAffineTransformIdentity, t,0.0);
CGAffineTransform translateLeft =CGAffineTransformTranslate(CGAffineTransformIdentity,-t,0.0);
viewToShake.transform = translateLeft;
[UIView animateWithDuration:0.07 delay:0.0 options:UIViewAnimationOptionAutoreverse|UIViewAnimationOptionRepeat animations:^{
[UIView setAnimationRepeatCount:2.0];
viewToShake.transform = translateRight;
} completion:^(BOOL finished){
if(finished){
[UIView animateWithDuration:0.5 delay:0.0 options:UIViewAnimationOptionBeginFromCurrentState animations:^{
viewToShake.transform =CGAffineTransformIdentity;
} completion:NULL];
}
}];
}
#pragma mark - 垂直上下画面抖动效果
+ (void)shakeViewVertical:(UIView*)viewToShake
{
CGFloat t =2.0;
//上下抖动效果
CGAffineTransform translateMiddle =CGAffineTransformTranslate(CGAffineTransformIdentity, 0.0,t);
CGAffineTransform translateTop =CGAffineTransformTranslate(CGAffineTransformIdentity,0.0,-t);
viewToShake.transform = translateMiddle;
[UIView animateWithDuration:0.1 delay:0.0 options:UIViewAnimationOptionAutoreverse|UIViewAnimationOptionRepeat animations:^{
[UIView setAnimationRepeatCount:1.0];
viewToShake.transform = translateTop;
} completion:^(BOOL finished){
if(finished){
[UIView animateWithDuration:0.5 delay:0.0 options:UIViewAnimationOptionBeginFromCurrentState animations:^{
viewToShake.transform =CGAffineTransformIdentity;
} completion:NULL];
}
}];
+ (void)shakeViewHorizontal:(UIView*)viewToShake
{
CGFloat t =2.0;
//左右抖动效果
CGAffineTransform translateRight =CGAffineTransformTranslate(CGAffineTransformIdentity, t,0.0);
CGAffineTransform translateLeft =CGAffineTransformTranslate(CGAffineTransformIdentity,-t,0.0);
viewToShake.transform = translateLeft;
[UIView animateWithDuration:0.07 delay:0.0 options:UIViewAnimationOptionAutoreverse|UIViewAnimationOptionRepeat animations:^{
[UIView setAnimationRepeatCount:2.0];
viewToShake.transform = translateRight;
} completion:^(BOOL finished){
if(finished){
[UIView animateWithDuration:0.5 delay:0.0 options:UIViewAnimationOptionBeginFromCurrentState animations:^{
viewToShake.transform =CGAffineTransformIdentity;
} completion:NULL];
}
}];
}
#pragma mark - 垂直上下画面抖动效果
+ (void)shakeViewVertical:(UIView*)viewToShake
{
CGFloat t =2.0;
//上下抖动效果
CGAffineTransform translateMiddle =CGAffineTransformTranslate(CGAffineTransformIdentity, 0.0,t);
CGAffineTransform translateTop =CGAffineTransformTranslate(CGAffineTransformIdentity,0.0,-t);
viewToShake.transform = translateMiddle;
[UIView animateWithDuration:0.1 delay:0.0 options:UIViewAnimationOptionAutoreverse|UIViewAnimationOptionRepeat animations:^{
[UIView setAnimationRepeatCount:1.0];
viewToShake.transform = translateTop;
} completion:^(BOOL finished){
if(finished){
[UIView animateWithDuration:0.5 delay:0.0 options:UIViewAnimationOptionBeginFromCurrentState animations:^{
viewToShake.transform =CGAffineTransformIdentity;
} completion:NULL];
}
}];
}
调用:
[Utility shakeViewHorizontal:self.drawSignView];