Итак, я пытаюсь сохранить начальное местоположение UIView, чтобы созданный мной блок мог / вернется обратно в это место, если он не будет расположен в правильном положении. Я создал CGPoint под названием «startPoint», и я хотел бы установить его координаты в начальной точке блока. Что происходит сейчас, так это то, что я получаю блок, и когда я его отпускаю, он переходит к 0,0 координатам на экране (вверху слева). Не совсем уверен, что мне не хватает. любая помощь будет оценена. Код ниже для жеста-распознавателя.
- (void)pan:(UIPanGestureRecognizer *)gestureRecognizer {
UIView *view = [gestureRecognizer view];
CGPoint startPoint;
if ([gestureRecognizer state] == UIGestureRecognizerStateBegan) {
view.backgroundColor = [UIColor redColor];
startPoint = [gestureRecognizer translationInView:self.view];
}
if ([gestureRecognizer state] == UIGestureRecognizerStateBegan || [gestureRecognizer state] == UIGestureRecognizerStateChanged) {
CGPoint translation = [gestureRecognizer translationInView:view.superview];
view.center = CGPointMake(view.center.x+translation.x, view.center.y+translation.y);
[gestureRecognizer setTranslation:CGPointZero inView:view.superview];
} else if ([gestureRecognizer state] == UIGestureRecognizerStateEnded) {
// double snapX = round(view.center.x / 110) * 110;
// double snapY = round(view.center.y / 110) * 110;
double snapX = round(startPoint.x);
double snapY = round(startPoint.y);
view.backgroundColor = [UIColor blueColor];
[UIView animateWithDuration:0.3 animations:^{
view.center = CGPointMake(snapX, snapY);
}];
}
}