Я хочу слегка повернуть UIView
, когда его таскают. Мне удалось сделать перетаскивание с помощью UIPanGestureRecognizer
. Я также попытался повернуть с помощью CGAffineTransformRotate
, и он сработал. Однако, когда я применяю как перетаскивание, так и вращение, UIView
вращается только, и он не перетаскивается вокруг супер-представления. Вот что я делаю в обработчике жестов:Вращение просмотра при перетаскивании
CGPoint translation = [gesture translationInView:self.view];
// to drag
gesture.view.center = CGPointMake(gesture.view.center.x + translation.x, gesture.view.center.y + translation.y);
// to rotate
gesture.view.transform = CGAffineTransformRotate(gesture.view.transform, degreesToRadians(translation.x)/4);
// return to default so that it doesn't accumulate
[gesture setTranslation:CGPointMake(0, 0) inView:self.view];
Как я могу это исправить?
EDIT: здесь весь код:
- (void)handlePan:(UIPanGestureRecognizer*)gesture{
if (gesture.state == UIGestureRecognizerStateBegan) {
// Save initial post center for snapping
point = CGPointMake(gesture.view.center.x, gesture.view.center.y);
} else if (gesture.state == UIGestureRecognizerStateChanged){
// Translate user movement across the screen to dragging coordinates
CGPoint translation = [gesture translationInView:self.view];
gesture.view.center = CGPointMake(gesture.view.center.x + translation.x, gesture.view.center.y + translation.y);
CGAffineTransform rotate = CGAffineTransformRotate(gesture.view.transform, degreesToRadians(translation.x)/4);
gesture.view.transform = rotate;//CGAffineTransformConcat(translate, rotate);
[gesture setTranslation:CGPointMake(0, 0) inView:self.view];
} else if (gesture.state == UIGestureRecognizerStateEnded){
// Animate snap back to place
[UIView animateWithDuration:0.2 animations:^{
gesture.view.transform = CGAffineTransformIdentity;
// [self.imagePost setCenter:point];
}];
}
}
Я понимаю, что вы не пытаетесь вращайтесь двумя пальцами, вы только один вид вращаться, когда вы ее обтекаете. Если это так, то код, который вы публикуете, работает. Поэтому проблема должна быть где-то в другом месте. – Odrakir
@ Odrakir приведенный выше код помещается, когда состояние распознавателя жестов изменяется, когда я перемещаю вид, который он вращает, но перемещение вверх или вниз по нему отскакивает в его месте. я выложу весь код. я думаю, что ничего не влияет на анимацию. Пожалуйста, проверьте это за минуту – HusseinB
Этот код работает тоже. – Odrakir