UIButton与核心动画缩放不会改变命中区域

时间:2011-03-14 10:38:54

标签: iphone cocoa-touch core-animation uibutton

我有一个我可以缩小动画的uibutton。 但是命中区域并没有随之缩小并保持其原始大小。

我的代码:

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform"];

float widthScale = size.width / view.frame.size.width;
float heightScale = size.height / view.frame.size.height;

animation.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeScale(widthScale, heightScale, 1.0)];

CAAnimationGroup *animGroup = [CAAnimationGroup animation];
animGroup.animations = [NSArray arrayWithObjects:animation];
animGroup.duration = 0.5;
animGroup.removedOnCompletion = NO;
animGroup.fillMode = kCAFillModeForwards;

[view.layer addAnimation:animGroup forKey:nil];

该按钮有一个我用setImage:forState设置的图像: 我给按钮一个框架,我把autoresizeSubviews设置为YES

2 个答案:

答案 0 :(得分:0)

CAAnimation秤/等。视图的底层;视图本身占据相同的边界。要修改视图本身,请尝试使用UIView动画块并修改视图的转换属性。

答案 1 :(得分:0)

这是一个陈旧的讨论,但我刚刚遇到了类似的情况,这个问题似乎没有真正回答......

图层不会直接响应触摸(触摸委托只是UIView的控制器,而不是其底层的CALayer)。动画图层后修复命中区域的一种可能解决方案是修改(背景视图的) view.frame 属性,使其大小和原点明确/“手动”调整为最终(预期)大小动画层。

转换后的 view.frame 将允许再次响应正确区域中的触摸,而不会影响动画CALayer形状。换句话说,CALAYer对象和UIView的frame属性似乎没有被解开。