我正在使用CAKeyframeAnimation。
-(IBAction)start:(id)sender {
UIBezierPath *path = [UIBezierPath bezierPath];
[path moveToPoint:CGPointMake(600, 150)];
[path addLineToPoint:CGPointMake(600, 300)];
[path addLineToPoint:CGPointMake(450, 300)];
[path addLineToPoint:CGPointMake(450, 150)];
[path addLineToPoint:CGPointMake(600, 150)];
CAKeyframeAnimation *move = [CAKeyframeAnimation animationWithKeyPath:@"position"];
move.path = path.CGPath;
move.duration = 6.0f;
move.repeatCount = 100;
[testButton.layer addAnimation:move forKey:@"move"];
我需要在移动时使用按钮。 此外,我尝试使用触摸检测,但它只在停止时使用按钮。 可能吗? 感谢。
答案 0 :(得分:0)
真!你希望用户在动画时按下按钮吗?人们更喜欢在动画期间关闭互动。但无论如何,这是你的互动,那就这样吧。你试过吗 - [yourButton setUserInteractionEnabled:TRUE];
通常在任何UIView
动画期间,我们只需将UIViewAnimationOptionAllowUserInteraction
作为动画选项即可。由于您已经更深入地使用CoreAnimation和图层,因此不确定哪些选项可以在其中使用。请告诉我们它是如何为您服务的......
更新:这个问题对我来说很有趣。所以我只是在Xcode中尝试这个。这是我发现的。要点击移动按钮,您需要在视图控制器中对按钮的.layer.presentationLayer
属性(需要QuartzCore
)执行命中测试。
在内部,动画只是眼睛糖果。动画落后于视图的实际移动。动画开始时,该按钮已位于目标点。你只看到视频/按钮移动的电影。如果您希望在动画期间可以点击按钮,则必须自己制作动画。
所以coe就像这样 -
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *t = [touches anyObject];
CGPoint location = [t locationInView:self.view];
for (UIButton *button in self.buttonsOutletCollection)
{
if ([button.layer.presentationLayer hitTest:location])
{
// This button was hit whilst moving - do something with it here
break;
}
}
}