UITapGestureRecognizer 点击
UILongPressGestureRecognizer 长按
UIPanGestureRecognizer 移动
点击的时候实现放大,长按的时候实现旋转,然后移动的时候实现位置互换点击空白区域的时候动画取消,还原
具体实现如下:
点击:
[UIView animateWithDuration:1 animations:^{
//
for (UIButton *button in self.view.subviews)
{
button.transform=CGAffineTransformIdentity;
button.alpha=1.0;
}
} completion:^(BOOL finished) {
//
}];
[UIView animateWithDuration:1 animations:^{
sender.transform=CGAffineTransformMakeScale(1.5, 1.5);
sender.alpha=0.5;
} completion:^(BOOL finished) {
//
}];
长按
if (sender.state==UIGestureRecognizerStateBegan)
{
for (UIButton *button in self.view.subviews)
{
NSUInteger index= [self.view.subviews indexOfObject:button];
if ((int)index%2==0)
{
button.transform=CGAffineTransformMakeRotation(0.3);
}
else
{
button.transform=CGAffineTransformMakeRotation(-0.3);
}
}
[UIView animateWithDuration:0.2 delay:0.0 options:UIViewAnimationOptionAutoreverse|UIViewAnimationOptionRepeat animations:^{
for (UIButton *ibutton in self.view.subviews) {
NSUInteger iindex= [self.view.subviews indexOfObject:ibutton];
if (iindex%2==1)
{
ibutton.transform=CGAffineTransformMakeRotation(0.3);
}
else
{
ibutton.transform=CGAffineTransformMakeRotation(-0.3);
}
}
} completion:^(BOOL finished) {
//
[UIView animateWithDuration:1.0 delay:0.0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
//
for (UIButton *button in self.view.subviews)
{
button.transform=CGAffineTransformMakeScale(1, 1);
button.alpha=1.0;
}
} completion:^(BOOL finished) {
//
}];
}];
}
else if (sender.state==UIGestureRecognizerStateChanged)
{
NSLog(@"UIGestureRecognizerStateChanged");
}
else
{
NSLog(@"UIGestureRecognizerStateEnded");
}
移动
if(sender.state==UIGestureRecognizerStateBegan)
{
UIButton *sbutton=(UIButton *)sender.view;
NSLog(@"%@",NSStringFromCGRect(sbutton.frame));
rstart=sbutton.frame;
}
else if (sender.state==UIGestureRecognizerStateChanged)
{
CGPoint center=[sender locationInView:self.view];
[sender.view setCenter:center];
}
else if (sender.state==UIGestureRecognizerStateEnded)
{
CGPoint point=[sender translationInView:self.view];
//CGRect end=CGRectMake(rstart.origin.x+point.x, rstart.origin.y+point.y, rstart.size.width, rstart.size.height);
for (UIButton *button in self.view.subviews)
{
if (button!=sender.view)
{
if (CGRectContainsPoint(button.frame,sender.view.center))
{
[UIView animateWithDuration:2.0 animations:^{
//
NSLog(@"%@",NSStringFromCGRect(rstart));
[sender.view setFrame:button.frame];
[button setFrame:rstart];
} completion:^(BOOL finished) {
//
}];
}
}
}
}