Проблема масштабирования UIImageView с помощью Pinch Gesture - PullRequest
2 голосов
/ 02 августа 2011

У меня есть программа, которая создает небольшой UIImageView, который реагирует на прикосновения, чтобы вы могли перетащить его вокруг суперпредставления.

Я добавил UIPinchGestureRecognizer, чтобы масштабировать изображение вверх и вниз. С текущим кодом изображение отлично масштабируется вверх и вниз, но перезапускается с масштабом 1,0, когда начинается новый жест повышения.

Я пытался использовать contentScaleFactor для получения начального масштаба ImageView, но он всегда равен 1,0, поэтому ясно, что приведенный ниже код не будет работать должным образом.

- (void)doPinch:(UIPinchGestureRecognizer *)pinch {



if (pinch.state == UIGestureRecognizerStateBegan) {

    initialScale = dragImage.contentScaleFactor;        

    } else {

    CGFloat newScale = initialScale * pinch.scale;

    CGAffineTransform transform = CGAffineTransformMakeScale(newScale,newScale);

    dragImage.transform = transform;

    }


}

Этот код был адаптирован из примера «Ущипни меня» в книге «Разработка Apress для iPhone 4».

Поскольку contentScaleFactor не работает, нужно ли мне использовать основное графическое свойство? Имеет ли CGAffineTransformScale какое-либо отношение к этому?

Спасибо!

1 Ответ

3 голосов
/ 02 августа 2011

contentScaleFactor не делает то, что вы думаете, что он делает ... что вы хотите, чтобы заменить эту строку:

initialScale = dragImage.contentScaleFactor; 

с

initialScale = dragImage.transform.a;

... и вы будете счастливым учеником («а» представляет собой масштабный коэффициент x матрицы преобразования, применяемой в настоящее время к dragImage).

...