0
한 손가락으로 축을 따라 UIView를 회전하기 위해 UIPanGestureRecognizer를 구현했습니다. uiview 내의 버튼은 UIView가 회전하는 지점에서 제스처를 시작합니다. 문제는 버튼이 첫 번째 사분면, 왼쪽 상단에있는 경우에만 올바르게 회전한다는 것입니다. 다른 모든 사분면은 이상하게 회전합니다. 누군가 내 수학에 잘못된 점을 말해 줄 수 있습니까? 그런데 ang은 수퍼 뷰의 좌표를 사용하여 각도를 계산합니다. 사용자 손가락이 회전하는 뷰 경계 바깥에있을 수 있기 때문입니다.하지만 그럴 필요는 없습니다. 손가락 1 개로 UIView 회전 iPhone, iPad
당신에게- (void)rotateItem:(UIPanGestureRecognizer *)recognizer
{
NSLog(@"Rotate Item");
float ang = atan2([recognizer locationInView:self.superview].y - self.center.y, [recognizer locationInView:self.superview].x - self.center.x);
float angleDiff = deltaAngle - ang;
self.transform = CGAffineTransformRotate(startTransform, -angleDiff);
CGFloat radians = atan2f(self.transform.b, self.transform.a);
NSLog(@"rad is %f", radians);
}
#pragma mark - Touch Methods
- (BOOL)gestureRecognizerShouldBegin:(UIPanGestureRecognizer *)recognizer
{
if (recognizer == rotateGesture) {
NSLog(@"rotate gesture started");
deltaAngle = atan2([recognizer locationInView:self].y-self.center.y, [recognizer locationInView:self].x-self.center.x);
startTransform = self.transform;
}
return YES;
}