Лучший способ получить значение кадра после преобразования?

#iphone #ios #cocoa-touch #core-graphics

#iPhone #iOS #прикосновение какао #ядро-графика

Вопрос:

У меня есть imageview, к которому прикреплен pinchgesturerecognizer. В методе делегирования pinchgesturerecognizer мне нужно вычислить значение кадра преобразования до того, как оно произойдет, чтобы увидеть, не вытолкнуло ли масштабирование imageview за пределы окна. Я знаю, что мне нужно использовать CGRectApplyAffineTransform для вычисления значения кадра каждый раз, но поскольку значение кадра imageview будет недействительным после выполнения первого преобразования, нужно ли мне теперь сохранять значение кадра обновления в переменной экземпляра и обновлять его каждый раз, когда происходит преобразование, или я могу каким-то образом получить это значение из самого imageview?

Ответ №1:

Итак, вы хотите проверить, находится ли a UIImageView внутри его окна?

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

У Apple есть раздел под названием «Взаимосвязь свойств рамки, границ и центра» в руководстве по программированию View для iOS.

 CGRect imageViewBounds = imageView.bounds;
CGRect imageViewBoundsInWindow = [imageView convertRect:imageViewBounds
                                                 toView:nil];
CGRect windowBounds = imageView.window.bounds;
if ( CGRectIntersectsRect( windowBounds, imageViewBoundsInWindow ) ) {
     // imageView is visible in its window
}