Страницы

Поиск по вопросам

среда, 18 декабря 2019 г.

Status Bar в iOS 7

#ios #ios7


Наверняка, если вы уже сталкивались с iOS 7, вы понимаете, о чем идет речь:

В iOS7 похоже изменилась система отсчета у view-объектов, и если запустить проект,
работающий нормально в iOS <= 6.1, в iOS 7, его контент будет выводиться поверх прямо
статус бара (на всякий случай "статус бар" - это где часы, вай-фай, моб. оператор...),
а внизу будет пустая полоса 20px. То есть как будто бы views стали отсчитываться с
(0, 0) экрана, а не как раньше с (0, 20).

На SO на этот счет внятных ответов я не нашел, так как там все вопросы про iOS 7
минусуют и закрывают, и говорят, что нужно идти на Apple forums. Единственное, что
я нашел это вот этот неубедительный ответ, который опять же ссылаясь на Apple forums,
утверждает, что прежнее поведение отсчета views с 20 пикселей является "an old bug"
и что нынешнее поведение "is actually a fix". На самих форумах Apple тоже внятной информации
с точным решением я пока не нашел.

Я прочитал iOS7 UI Transition guide, и видел, что


  In iOS 7, view controllers use full-screen layout.


но мне интересно (внимание, вопрос!), можно ли с помощью кода сохранить старое поведение
предыдущих версий iOS и в версии iOS 7.0? Изменение разных параметров, которые Apple
описывает в этом гайде, не дало мне нужного, даже приблизительно, результата.

Примечание: я имею в виду поведение проектов, написанных руками, без использования
Storyboards.
    


Ответы

Ответ 1



Я в своё время нашёл решение для своего вопроса, и так и не собрался оформить его здесь в виде ответа. Не очень удобное, но работающее самым надёжным из всех возможных образом. Кратко: я завернул view-иерархию каждого контроллера в ещё один UIView *compatibilityContainerView, который и выполнял необходимое мне позиционирование. В одной из ссылок на эту тему: Wrestling with Status Bars and Navigation Bars on iOS 7 этот способ описан под цифрой 9. Теперь же похоже это постепенно становится неактуальным, так как Apple говорит нам в принудительном порядке адаптировать приложения под iOS 7: С 1 февраля 2014 все новые приложения должны быть адаптированы под iOS7.

Комментариев нет:

Отправить комментарий