2013-02-13 2 views
1

Мое приложение (целевой iOS 5+, использует ARC и раскадровки, для App Store) использует некоторые преобразования вращения. Там есть ошибка, в которой строка состояния в вызове (например, если есть постоянный телефонный звонок или запись микрофона) заставляет представления мутировать вне того, что описывает трансформация. Чтобы диагностировать проблему, я написал простой файл test app *, который воспроизводит преобразование вида.Как отображается строка состояния в вызове моего представления CGAffineTransform'd?

Первоначально (воспроизводится в тренажерах 5.0 и 6.1, и аппаратное обеспечение 6.1) выглядит как

enter image description here

После поворота на 20 градусов:

enter image description here

Все еще хорошо! Но что-то странное происходит, когда я переключить строку состояния во время вызова (команда-T):

enter image description here

Хорошо, ну, может быть, это будет вернуться, если отключить в строке состояния вызова

enter image description here

Бедствие! Давайте попробуем сбросить вид преобразует к CGAffineTransformIdentity

enter image description here

О, что я ввязался ?!

В любом случае, я новичок в CGAffineTransforms и Quartz 2D в целом, поэтому я был бы признателен, если бы кто-нибудь мог сказать мне, почему это происходит. Код available on Github * если вы хотите совать.

* Обратите внимание, что код обновлен решением.

ответ

1

Это происходит потому, что переключение строки состояния в вызове изменяет рамку представления, которая (если она настроена на автоматизацию подсмотров) автоматически выполняет подсмотр. Если преобразованное представление имеет любые гибкие поля, оно может искажаться, как показано на приведенных выше снимках экрана. Чтобы он не перекосился, включите все четыре стойки.

Смежные вопросы