- (void)viewDidLoad {
[super viewDidLoad];
UIView * vi = [[UIView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
vi.backgroundColor = [UIColor redColor];
[self.view addSubview:vi];
[self earthquake:vi];
}
-(void)earthquake:(UIView*)itemView
{
CGFloat t =2.0;
CGAffineTransform leftQuake =CGAffineTransformTranslate(CGAffineTransformIdentity, t,-t);
CGAffineTransform rightQuake =CGAffineTransformTranslate(CGAffineTransformIdentity,-t, t);
itemView.transform = leftQuake; // starting point
[UIView beginAnimations:@"earthquake" context:(__bridge void * _Nullable)(itemView)];
[UIView setAnimationRepeatAutoreverses:YES];// important
[UIView setAnimationRepeatCount:5];
[UIView setAnimationDuration:0.07];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(earthquakeEnded:finished:context:)];
itemView.transform = rightQuake;// end here & auto-reverse
[UIView commitAnimations];
}
-(void)earthquakeEnded:(NSString*)animationID finished:(NSNumber*)finished context:(void*)context
{
if([finished boolValue])
{
UIView* item =(__bridge UIView*)context;
item.transform =CGAffineTransformIdentity;
}
}