1

我有一个 UIView 的子类,它正在使用 CABasicAnimation 进行旋转。我还希望用户触摸这个旋转的视图来触发某些事件。但是,我发现对我的视图应用旋转似乎会弄乱我视图的可触摸区域。旋转后视图正确显示,但似乎只有一半的视图是可触摸的。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"];

通过做一些 NSLogs,我确实可以看到在添加动画后视图的框架没有被修改,尽管视图在视觉上看起来不同。

4

1 回答 1

1

我最终只使用 CGAffineTransform 进行旋转。只要确保在应用旋转后不要修改框架,如果需要移动视图,您应该使用 view.center 而不是 view.frame。

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