iOS: панорамирование в представлении - PullRequest
1 голос
/ 08 февраля 2012

У меня есть следующие настройки UIPanGestureRecognizer:

- (void)pan:(UIPanGestureRecognizer *)gesture {
    if ((gesture.state == UIGestureRecognizerStateChanged) ||
        (gesture.state == UIGestureRecognizerStateEnded)) {
        CGPoint translation = [gesture translationInView:self.superview];
        gesture.view.center = CGPointMake(gesture.view.center.x + translation.x, gesture.view.center.y + translation.y);
        [gesture setTranslation:CGPointZero inView:self.superview];
    }
}

Я хочу перемещаться по представлению, перемещать одно место в другое в том же представлении. Что это делает, так это перемещение представления, как я могу изменить его, чтобы сделать то, что я хочу?

ОБНОВЛЕНИЕ: так мой метод закончил корректно перемещаться

- (void)pan:(UIPanGestureRecognizer *)gesture {
    if ((gesture.state == UIGestureRecognizerStateChanged) ||
        (gesture.state == UIGestureRecognizerStateEnded)) {
        CGPoint translation = [gesture translationInView:self];;
        self.origin = CGPointMake(self.origin.x + translation.x, self.origin.y + translation.y);
        [gesture setTranslation:CGPointZero inView:self];
    } 
}

origin - это, на мой взгляд, свойство, которое просто указывает, где будет находиться центр моего графика. В его методе установки есть setNeedsDisplay для обновления при каждом изменении этого значения

1 Ответ

6 голосов
/ 09 февраля 2012

ОК, так что (это только у меня в голове, не проверено), если вы хотите просто прокрутить по горизонтали, не используя UIScrollView, попробуйте это:

- (void)pan:(UIPanGestureRecognizer *)gesture {
    if ((gesture.state == UIGestureRecognizerStateChanged) ||
        (gesture.state == UIGestureRecognizerStateEnded)) {
        CGPoint translation = [gesture translationInView:self.superview];
        gesture.view.center = CGPointMake(gesture.view.center.x + translation.x, gesture.view.center.y);
        [gesture setTranslation:CGPointZero inView:self.superview];
    }
}

Все, что вам нужно сделать, это пропустить+ translation.y.

Если вы хотите использовать UIScrollView (который я бы порекомендовал), посмотрите одно из следующих руководств: Есть ли какие-нибудь хорошие учебники UIScrollView в сети?

...