UIButtonにアニメーションを追加する必要があります-単純な移動アニメーション。これを行うと、ボタンは移動しますが、そのボタンのクリック領域は古い位置のままです。
UIButton *slideButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[slideButton addTarget:self action:@selector(clicked:) forControlEvents:UIControlEventTouchUpInside];
[slideButton setFrame:CGRectMake(50, 50, 50, 50)];
[self.view addSubview:slideButton];
CABasicAnimation *slideAnimation = [CABasicAnimation animationWithKeyPath:@"position"];
[slideAnimation setRemovedOnCompletion:NO];
[slideAnimation setDuration:1];
[slideAnimation setFillMode:kCAFillModeBoth];
[slideAnimation setAutoreverses:NO];
slideAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(50, 50)];
slideAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(100, 100)];
[slideButton.layer addAnimation:slideAnimation forKey:@"slide"];
アニメーションの最後でボタンのフレームを変更する答えをすでに見ました(ここのように、UIButtonはCABasicAnimatonの後に間違った位置でtouchEventsを受け取ります)が、ユーザーがボタンをクリックする可能性を与える必要があるため、私の場合ではありません移動しています...また、オブジェクトを移動するための複雑なパスがあるため、CABasicAnimationの代わりに別のアプローチ(NSTimerなど)を使用することはできません...
ご協力いただきありがとうございます!