У меня есть распознаватель жестов щипка, прикрепленный к просмотру изображения, из которого я использую щипки, чтобы увеличить и минимизировать фотографию.Ниже приведен код, который я использую в методе делегата:
- (void)scale:(UIPinchGestureRecognizer *)sender
{
if([sender state] == UIGestureRecognizerStateBegan)
{
lastScale = [sender scale];
}
if ([sender state] == UIGestureRecognizerStateBegan ||
[sender state] == UIGestureRecognizerStateChanged)
{
CGFloat currentScale = [[[sender view].layer valueForKeyPath:@"transform.scale"] floatValue];
CGFloat newScale = 1 - (lastScale - [sender scale]) * (UIComicImageViewPinchSpeed);
newScale = MIN(newScale, minScale / currentScale);
newScale = MAX(newScale, maxScale / currentScale);
CGAffineTransform transform = CGAffineTransformScale([[sender view] transform], newScale, newScale);
[sender view].transform = transform;
lastScale = [sender scale];
}
}
Мне нужно определить, где будет находиться новый центр фрейма изображения, прежде чем я фактически выполню преобразование.Есть ли способ определить это?По сути, я пытаюсь остановить масштабирование, если оно собирается переместить изображение с экрана или приблизиться к нему.
ОБНОВЛЕНИЕ
Спасибо Робину, ниже, за то, что он предложил этот метод, чтобы выяснить преобразованный кадр.Проблема, с которой я сейчас сталкиваюсь, заключается в том, что кадр становится недействительным после выполнения преобразования, и мне нужно отслеживать самый последний кадр, чтобы выяснить границу моего изображения.Очевидно, я могу сделать это вручную и сохранить его в переменной экземпляра, но мне интересно, есть ли более «элегантный» способ сделать это?