我有一个关于如何使用基于触摸的事件来旋转UIView的问题。
很简单,我想围绕一个锚点旋转UIView,具体取决于我在该视图中触摸和关闭的位置。想象一下高保真音量旋钮,用一根手指转动。
我使用CAKeyframeAnimation构建了一个执行transform.rotation.z的旋转方法,但是我不确定是否(a)我应该将它与触摸方法一起使用,以及(b)我如何能够获取相对于底层UIView的触摸坐标/角度,然后将其转向指向触摸。
我希望我有意义......任何人都可以提出任何建议吗?
答案 0 :(得分:3)
- (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
CGPoint newLocationPoint = [[touches anyObject] locationInView:self.superview];
int x = self.superview.center.x;
int y = self.superview.center.y;
float dx = newLocationPoint.x - x;
float dy = newLocationPoint.y - y;
double angle = atan2(-dx,dy);
self.layer.position = self.superview.center;
self.layer.transform = CATransform3DMakeRotation(angle, 0, 0, 1);
NSLog(@"%f,%f ", dx,dy);
}
把它放在你的UIView子类和Voila中!
答案 1 :(得分:2)
- (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
CGPoint Location = [[touches anyObject] locationInView:self];
int x = ImageView.center.x;
int y = ImageView.center.y;
float dx = Location.x - x;
float dy = Location.y - y;
double a = atan2(-dx,dy);
ImageView.layer.position = diagramImageView.center;
ImageView.layer.transform = CATransform3DMakeRotation(a, 0, 0, 1);
}