Использование 2 UIPinchGestureRecognizer в том же UIImageView
У меня есть изображение, которое я хочу сжать, чтобы изменить масштаб без сохранения соотношения сторон. Чтобы сделать это, я подумал, что это может быть осуществимо либо:
- Используйте два распознавателя жестов, один из которых растягивается горизонтально, а другой - вертикально.
- Используйте один пинч-распознаватель, но примените два преобразования одно за другим.
Вот моя функция обработки щепотки:
- (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.