Использование 2 UIPinchGestureRecognizer в том же UIImageView

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

  1. Используйте два распознавателя жестов, один из которых растягивается горизонтально, а другой - вертикально.
  2. Используйте один пинч-распознаватель, но примените два преобразования одно за другим.

Вот моя функция обработки щепотки:

- (void) pinch:(UIPinchGestureRecognizer *)recognizer {
    static CGRect initialBounds;

    if (recognizer.state == UIGestureRecognizerStateBegan)
    {
        initialBounds = imageView.bounds;
    }
    CGFloat factor = [(UIPinchGestureRecognizer *)recognizer scale];

    //scale horizontally
    CGAffineTransform zt = CGAffineTransformScale(CGAffineTransformIdentity, 
                                                     factor-(1.0-factor), 1.0);
    imageView.bounds = CGRectApplyAffineTransform(initialBounds, zt);

    //now scale vertically
    zt = CGAffineTransformScale(CGAffineTransformIdentity, 1.0, factor);
    imageView.bounds = CGRectApplyAffineTransform(initialBounds, zt);
    return;
}

По какой-то причине преобразование выполняется только вертикально (последнее). Я попытался изменить первый параметр второго CGRectApplyAffineTransform на imageView.bounds, но он все еще не работал.

Может кто-нибудь сказать, пожалуйста, где я иду не так?

Кроме того, при использовании двух распознавателей жестов происходит то же самое - только один из них фактически распознается.

Спасибо!

1 ответ

Ваш второй начинается с CGAffineTransformIdentity. Вместо этого пройдите в ZT.

Другие вопросы по тегам