iPhone - установка прошивки 2.2 вызвала странное поведение дисплея

У меня есть UINavigationController, содержащий UIViewController, инициализированный с UIView.

UINavigationController также имеет UINavigationBar как обычно.

Ранее, когда я позиционировал новый элемент в UIView на 0,0, используя

CGRectMake(0,0,height,width);

Это поместило бы это непосредственно ниже UINavigationController. Тем не менее, после компиляции с 2.2 теперь он размещает 0,0 непосредственно за UINavigationBar (где вы ожидаете, что 0,0 будет нормальным).

Это происходит только тогда, когда приложение перекомпилировано с 2.2 SDK - приложение, оставленное на iPhone до обновления, все еще работает, как и ожидалось.

Дело в том, что я очень хочу, чтобы мое приложение рисовало правильно с 2.2, а также было обратно совместимо с 2.1

Кто-нибудь видел такое поведение или знает что-нибудь еще об этом?

Спасибо!

11.12.2008 16:15:02
4 ОТВЕТА
РЕШЕНИЕ

Существует целая (очень полезная) ветка о вещах, которые 2.2 сломались на форумах разработчиков Apple. Это включает эту проблему (хотя без какого-либо исправления). Я видел это упоминалось и в других местах.

Это стоит проверить

https://devforums.apple.com/message/12297#12297 (ссылка исправлена)

1
11.12.2008 18:44:13

Похоже, это новое поведение является «предполагаемым» поведением, которое имеет смысл.

Обидно, что будет сложно заставить мое приложение правильно отображаться в 2.1 и 2.2.

Также кажется, что, если я возьму с настройкой UINavigationBar прозрачный / непрозрачный, я найду некоторую правильную комбинацию ошибок, которая заставит ее правильно отображаться в обоих случаях.

Даст вам знать мои выводы.

0
11.12.2008 18:39:35

Из вышеуказанной связанной ветки:

«Исправлена ​​ошибка, из-за которой мои навигационные панели были непрозрачными (раньше они были полупрозрачными). Я думаю, что, возможно, это исправление ошибки, поскольку для меня логично, что вид должен отображаться за полупрозрачной панелью».

Так что да, это, кажется, предполагаемое поведение. Имеет смысл, но облом, тем не менее!

0
23.01.2009 05:15:41

Я смог сделать позиционирование вида при использовании UIBarStyleTranslucent одинаковым в 2.1 и 2.2, выполнив следующие действия:

Установите вид моего viewcontroller на пользовательский вид, который я создал. Сделайте так, чтобы пользовательское представление расширяло UIScrollView, и в его методе drawRect нарисуйте черный фон и установите его размер в соответствии с размером представления.

Надеюсь это поможет =)

0
6.03.2009 16:49:17