创build一个UIAlertView的摇动animation

我试图做一个UIAlertView摇。 我已经做了alertView留在button单击,但动摇animation不工作。 这是我有什么:

 - (void) alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { if (buttonIndex == 1) { self.direction = 1; self.shakes = 0; [self shake:aUIView]; } } -(void)shake:(UIAlertView *)theOneYouWannaShake { [UIView animateWithDuration:0.03 animations:^ { theOneYouWannaShake.transform = CGAffineTransformMakeTranslation(5 * self.direction, 0); } completion:^(BOOL finished) { if(self.shakes >= 10) { theOneYouWannaShake.transform = CGAffineTransformIdentity; return; } self.shakes++; self.direction = self.direction * -1; [self shake:theOneYouWannaShake]; }]; } 

我试着把一个NSLog - (void)shake...我得到了一个输出。 所以我的代码中肯定有些问题,为什么alertView没有晃动。

我创造了一个幻觉,让alertview看起来像是在摇晃。 如果您必须设置关于alertview(包括那个黑暗的背景屏幕)应该震动多大程度的参数。

由于你不能改变UIAlertView的框架,所以在CGTranformations下。

 UIAlertView *dialog = [[UIAlertView alloc] initWithTitle:@"Title" message:@"Message:" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Done", nil]; [dialog setAlertViewStyle:UIAlertViewStylePlainTextInput]; [dialog show]; UIView *dillusionView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; [dillusionView setBackgroundColor:[UIColor blackColor]]; [self.view addSubview:dillusionView]; [UIView animateKeyframesWithDuration:1.0 delay:0.0 options:UIViewKeyframeAnimationOptionAutoreverse | UIViewKeyframeAnimationOptionRepeat animations:^{ [UIView addKeyframeWithRelativeStartTime:0.0 relativeDuration:0.5 animations:^{ dialog.window.transform = CGAffineTransformTranslate(dialog.transform, dialog.frame.origin.x - 10, dialog.frame.origin.y); }]; [UIView addKeyframeWithRelativeStartTime:0.5 relativeDuration:0.5 animations:^{ dialog.window.transform = CGAffineTransformTranslate(dialog.transform, dialog.frame.origin.x + 10, dialog.frame.origin.y); }]; } completion:nil]; 

我会build议使用自定义创build的UIAlertView,而且还有几个可用的开源库。

您可以在iOS中使用UIKit Dynamics进行animation效果。 这里是一个使用UIKitdynamic学 UIAlertView摇动animation的教程 。 对于更多,你可以参考这个教程也是迅速。