1

CABasicAnimationを使用して回転しているUIViewのサブクラスがあります。また、この回転したビューにユーザーが触れて、イベントをトリガーしたいと思います。ただし、ビューに回転を適用すると、ビューのタッチ可能な領域が台無しになっているように見えることがわかりました。ビューは回転した後は正しく表示されますが、ビューの半分だけがタッチ可能であるように見えます。touchesBeganメソッドは、タッチがビュー上にはっきりと存在していても、ビューの一部に対しては起動しません。ビューを適切に操作できるように、ビューを回転させた後にフレームを修正するために必要なことはありますか?

これは私のローテーションコードです:

CABasicAnimation *fullRotation;
fullRotation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
fullRotation.fromValue = [NSNumber numberWithFloat:0];
fullRotation.toValue = [NSNumber numberWithFloat:angle];
fullRotation.duration = 0.0;
fullRotation.removedOnCompletion = FALSE;
fullRotation.autoreverses = NO;
fullRotation.fillMode = kCAFillModeForwards;
fullRotation.repeatCount = 0;
[self.layer addAnimation:fullRotation forKey:@"rotation"];

いくつかのNSLogを実行すると、ビューが視覚的に異なって見えるにもかかわらず、アニメーションが追加された後、ビューのフレームが変更されていないことが実際にわかります。

4

1 に答える 1

1

私は CGAffineTransform を使用して回転を行うことになりました。ビューを移動する必要がある場合は、view.frame の代わりに view.center を使用する必要があります。

CGAffineTransform transformRotate = CGAffineTransformMakeRotation(angle);
self.transform = transformRotate;
于 2012-05-28T01:55:21.040 に答える