0

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"];

移動中にボタンを使用できるようにする必要があります。また、タッチ検出を使用してみましたが、停止中はボタンでしか機能しません。出来ますか?ありがとう。

4

1 に答える 1

0

本当に!アニメーション中にユーザーにボタンを押してもらいたいですか?人々はアニメーション中のインタラクションをオフにすることを好みます。しかし、とにかく、これはあなたの相互作用です。やってみました -[yourButton setUserInteractionEnabled:TRUE];

通常、アニメーション中は、アニメーションオプションとしてUIView単純に配置する必要があります。UIViewAnimationOptionAllowUserInteractionCoreAnimationとレイヤーの使用についてさらに深く理解しているため、そこで機能するオプションがわからない。それがあなたのためにどのように機能するかを私たちに知らせてください...

更新:この問題は私には興味深く見えました。だから私はXcodeでこれを試していました。これが私が見つけたものです。.layer.presentationLayer移動するボタンを押すには、View Controllerのボタンのプロパティ(これに必要)でヒットテストを実行する必要がありますQuartzCore

内部的には、アニメーションは単なる目玉です。アニメーションは、ビューの実際の動きよりも遅れています。アニメーションの開始時には、ボタンはすでに宛先ポイントにあります。ビュー/ボタンが動くムービーを見るだけです。アニメーション中にボタンをクリックできるようにする場合は、アニメーションを自分で作成する必要があります。

だから、コーはこのようになります-

- (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;
        }
    }
}
于 2012-11-11T17:53:34.267 に答える