2013-09-12 1 views
16

У меня странное поведение с моими UIView, когда я перехожу на iOS7. Кажется, что им отправлено сообщение с сокращением на 20 пикселей. Я удалил строку состояния из всех моих XIB-файлов и явно установил ее в скрытое в делете приложения. Мой UINavigationController, кажется, послал сообщение:Содержимое iOS7 Смещение на 20 пикселей для несуществующих статусных баров

_computeAndApplyScrollContentInsetDeltaForViewController 

, который в свою очередь отправляет сообщения моих взглядов спиральными

_adjustContentOffsetIfNecessary 

которые устанавливают их смещение -20 пикселей ... Это не должно действительно произойти, как там не является причиной для того, чтобы эта функция могла корректировать что-либо на эту сумму.

У кого-нибудь есть идея, как это исправить?

ответ

75

Я нашел решение! Просто установите:

self.automaticallyAdjustsScrollViewInsets = NO; 

на контроллере представления, который имеет вид прокрутки как вид ...

+0

Действительно заметный и простой ответ ... Большое спасибо @Mike M. –

+0

Большое вам спасибо. –

0

20 пикселей (или, может быть, точек), который звучит как его строка состояния, когда НЕ принимает телефонный звонок (я считаю, 40 при получении вызова). Не уверен, что это исправит вашу проблему, но у меня возникла проблема, когда в iOS7 моя строка состояния не скрывалась. Я спрятал его программно, и он все еще отображается в iOS7, но при запуске в iOS6 строка состояния скроется соответствующим образом. Вы должны перейти к plist и добавить следующее: «просмотреть состояние строки состояния на основе контроллера» и установить значение НЕТ.

+0

Что мне нужно, однако, для строки состояния появится, как это делает на iOS7 ... прозрачный, с видами, способными двигаться позади. Что происходит, так это то, что на applicationFrame фактически установлено значение {{0, 20}, {748,1024}}. Таким образом, кажется, что ОС учитывает эту строку состояния и распространяет сообщение на все представления ... Как это остановить? Как я могу сказать, что он не учитывает строку состояния, поскольку она прозрачна? –

+0

Хорошим правилом, которым нужно следовать, когда вы кодируете, никогда не устанавливать ничего относительно представлений в статическом местоположении. Вы управляете своим представлением динамически? – ConfusedDeer

+0

Это была бы плохая практика, а не лучший способ справиться с ней, но можете ли вы просто выровнять высоту строки состояния из координаты y вашего вида? Я не могу представить, как это будет происходить, если вы не статически настроите представление на местоположение. Можете ли вы опубликовать любой код? Я хотел бы иметь возможность воспроизвести это поведение. – ConfusedDeer

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