Проблемы при переходе с xcode 3.2.6 на xcode 4.0.2 - PullRequest
0 голосов
/ 26 апреля 2011

У меня есть проект, который успешно работает под xcode 3.2.6 с sdk4.3.Он содержит множество пользовательских элементов управления и анимации.Но клиент хочет, чтобы я использовал xcode 4.0.2.Поэтому я скачал его (xcode 4.0.2 build 4A2002a) и обнаружил, что мое приложение не работает должным образом.
Все представления имеют неожиданные координаты.Я использовал приватную функцию API recursiveDescription, чтобы создать дамп моего дерева подпредставлений.Вот что я получил:

<UIView: 0x4e0f160; frame = (0 0; 1024 768); transform = [0, 1, -1, 0, 0, 0]; autoresize = W+H; layer = <CALayer: 0x4e0f210>>
   | <UIView: 0x4e0fc50; frame = (0 0; 768 1024); autoresize = RM+BM; layer = <CALayer: 0x4e0fca0>>
   |    | <UIToolbar: 0x4e1afd0; frame = (0 980; 768 44); autoresize = W+TM; layer = <CALayer: 0x4e1a9a0>>
   |    |    | <UIButton: 0x4e1cba0; frame = (12 6; 72 33); opaque = NO; autoresize = RM+BM; userInteractionEnabled = NO; layer = <CALayer: 0x4e1cca0>>

Пока ожидалось:

<UIView: 0x590d420; frame = (0 0; 1024 768); autoresize = W+H; layer = <CALayer: 0x590d4f0>>
   | <UIView: 0x590e720; frame = (0 0; 1024 768); autoresize = RM+BM; layer = <CALayer: 0x5918500>>
   |    | <UIToolbar: 0x5919050; frame = (0 724; 1024 44); autoresize = W+TM; layer = <CALayer: 0x59190f0>>
   |    |    | <UIButton: 0x591a7e0; frame = (12 6; 72 33); opaque = NO; autoresize = RM+BM; userInteractionEnabled = NO; layer = <CALayer: 0x591a600>>

Я заметил, что свойство transform было добавлено в самый верхний вид.Следует отметить, что мое приложение работает только в альбомной ориентации, что указано во всех NIB и в свойствах проекта.Также у каждого контроллера представления есть метод shouldAutorotateToInterfaceOrientation, который проверяет, является ли режим, на который нужно переключиться, альбомным.

Изменение свойства преобразования вручную на CGAffineTransformIdentity перемещает все виды на свои места, но поворачивает экран на 90 градусов влево (от ожидаемого положения ландшафта).Но после поворота устройства все виды возвращаются на свои места (этот факт меня шокировал).Изменение свойства преобразования на CGAffineTransformMakeRotation(M_PI_2) вызвало проблемы, которые у меня были раньше.

Не могли бы вы поделиться со мной идеями о том, что и почему задает свойство transform самого верхнего представления?Это ошибка XCode или моей?

...