因为业务需求需要写一个按钮 旋转 放大 然后移动到指定位置的需求.然后顺势很快将动画给动画搞定了.但是随之而来的遇到了两个问题(如下):
1.动画执行完后立马回到了原始位置.
解决方法(组动画):
CAAnimationGroup *groupAnimation = [CAAnimationGroup animation];
groupAnimation.removedOnCompletion=NO;
groupAnimation.fillMode=kCAFillModeForwards;
2. btn位置移动后点击事件失效问题.(因为动画改编的是layer,所以btn的frame其实还是原来的位置.所以响应的事件还是原来的位置.不信你可以点一下你原来的位置.还是可以响应事件的)
解决方法:
1.给改btn的父视图添加点击手势
UITapGestureRecognizer * viewTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(moreBtnTaped:)];
[self.view addGestureRecognizer:viewTap];
2.通过手势方法进行layer的判断添加方法.(不过这时候的btn的点击效果就没了 悲催(还好产品总监不管这))
- (void)moreBtnTaped:(UITapGestureRecognizer*)sender{
CGPointtouchPoint = [senderlocationInView:self.view];
if ([self.moreBtn.layer.presentationLayer hitTest:touchPoint])
{
[self.viewmakeToast:@"更多按钮"];
}
}
OK,至此出现的两个问题解决了.
网友评论