Приблизительный прямоугольник после применения CATransform3D?

Я применил CATransform3D к представлению. Как после него найти примерный новый кадр?

Я имею в виду, что применил сложное преобразование: вращение, перемещение, масштабирование и перспективу. И мне нужно найти что-то вроде приблизительного минимального прямоугольника. Мне это нужно, потому что это представление добавлено в UIScrollView (чтобы знать, что мне нужно contentSize, и, конечно, реализовать "scrollToItem:")


person Vyachaslav Gerchicov    schedule 30.06.2015    source источник


Ответы (1)


Если вы хотите получить CGRect, который полностью содержит это преобразованное представление, вы можете использовать convertRect:toView:. Например:

CGRect rect = [viewWithTransforms convertRect:viewWithTransforms.bounds toView:self.view];

Например, серый вид — это некоторое преобразование UIView, а черная рамка — результат convertRect:toView:, показанного выше:

введите здесь описание изображения

person Rob    schedule 30.06.2015
comment
это странно, но в моем случае это показывает тот же результат, что и свойство кадра. Разве ты не знаешь, что они разные? - person Vyachaslav Gerchicov; 14.07.2015
comment
Согласно документация, если вид трансформируется, значение свойства frame не определено. Я не удивлен, что он равен результату convertRect (что является более обобщенным решением), но, учитывая это предостережение в документации, я бы не стал использовать frame после преобразования представления. bounds описывает размер прямоугольника до преобразования. - person Rob; 15.07.2015
comment
Я использую ваш код, но все же, когда я увеличиваю масштаб в то время, он дает CGRectInfinite. - person girish_pro; 20.04.2017
comment
convertRect возвращается CGRectInfinite? Или frame есть? - person Rob; 20.04.2017