#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
}