2012-05-27 60 views
1

我有一个使用CABasicAnimation旋转的UIView的子类。我也希望这个旋转的视图被用户触动以触发某些事件。不过,我发现将旋转应用于我的观点似乎弄乱了我的观点的可触摸区域。视图在旋转后正确显示,但似乎只有一半视图可触摸。 touchesBegan方法不会在部分视图上触发,即使触摸清晰地显示在视图上。是否有什么我需要做的,以纠正一个视图的框架后,它已被旋转,以便它可以正常交互?IOS CABasicAnimation旋转和触摸框架

这是我的轮换代码:

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我的确可以看到视图的框架尽管观点看起来视觉上不同的动画添加之后不被修改。

回答

1

我结束了刚刚使用CGAffineTransform做我的轮换。只要一旦应用旋转就不要修改框架,如果需要移动视图,则应该使用view.center而不是view.frame。

CGAffineTransform transformRotate = CGAffineTransformMakeRotation(angle); 
self.transform = transformRotate;