Поворот UIView с помощью UITouch - PullRequest
3 голосов
/ 20 сентября 2010

У меня есть вопрос о том, как мне подходить к повороту UIView с событиями на основе касания.

Проще говоря, я хочу вращать UIView вокруг привязки в зависимости от того, где я касаюсь и выключаю в этом представлении,Представьте себе ручку регулировки громкости на hifi, которую вы поворачиваете одним пальцем.

Я создал метод поворота с использованием CAKeyframeAnimation, который выполняет transform.rotation.z, однако я не уверен, что если (a) Я должен использовать это в сочетании с методами касания и (б) как я могу получить координату / угол касания относительно базового UIView, а затем повернуть его так, чтобы он указывал на касание.

Iнадеюсь, что я понимаю ... Кто-нибудь может сделать какие-либо предложения?

Ответы [ 2 ]

3 голосов
/ 29 ноября 2012
- (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 и вуаля!

2 голосов
/ 02 ноября 2010
- (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);
}
...