Согласно документации UIView для свойства frame
:
Предупреждение. Если свойство преобразования не является преобразованием идентичности, значение этого свойства не определено и поэтомуследует игнорировать.
Свойство frame
также становится неопределенным, если вы настраиваете свойства слоя transform
или affineTransform
этого вида (которые фактически изменяются в UIView при установке его преобразования).В Cocoa Touch преобразования применяются во время композитинга композитором.В настоящее время то, что вы, кажется, получаете, когда применяется преобразование, является исходным кадром, как если бы оно не было преобразовано, но, как утверждают в документах, оно не определено, поэтому не полагайтесь на это.При просмотре без других преобразований я рекомендую использовать свойство представления center
вместо применения преобразования.Это обновит ваш кадр правильно.Основываясь на эмпирических данных, UIKit также выглядит достаточно умным, так что простая настройка центра не приводит к снижению производительности по сравнению с применением преобразования.