Как исправить пустое пространство размером 44 пикселя в представлении iOS7 с помощью ViewDeckController?

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

Показанное красное пространство на самом деле является видом позади черного вида. Независимо от того, на какой размер я установил рамку черного вида, всегда отображается красное пространство. Я также скрываю строку состояния в plist, поэтому не знаю, является ли это артефактом от этого или имеет ли он какое-то отношение к панели навигации, так как они оба обычно имеют высоту 44px.

Я посмотрел руководство по переходу и не нашел ничего работающего. Есть идеи, что может быть причиной этого и как это исправить?

ОБНОВЛЕНИЕ: я попытался установить edgeForExtendedLayout = UIRectEdgeAll и extendedLayoutIncludesOpaqueBars = YES (также попытался НЕТ) без эффекта. Когда я смотрю на подпредставления контроллера навигации, он показывает UIToolBar как скрытый, но показывает, что он содержит рамку в той области, в которой вид отказывается изменять размеры даже с ограничениями автопоставки.

ОБНОВЛЕНИЕ 2: Это на самом деле проблема с ViewDeckController ( https://github.com/Inferis/ViewDeck) и тем, как он устанавливает свои границы центра обзора.

3 ответа

Это на самом деле проблема с сторонней библиотекой ViewDeckController ( https://github.com/Inferis/ViewDeck) и тем, как она устанавливает centerViewBounds для IIViewDeckControllerIntegrated. Я смог понять это после перехода на IIViewDeckControllerContained и просмотра правильного размера представления.

В IIViewDeckController.m просто верните self.referenceBounds для iOS7, как это делается для IIViewDeckControllerContained.

Я считаю, что это связано с UINavigationBar, Попробуйте включить следующие параметры в раскадровке и посмотреть, решит ли это проблему. А именно, опции "Расширить края":

Эти параметры также могут быть установлены в коде с edgesForExtendedLayout а также extendedLayoutIncludesOpaqueBars свойства на UIViewController.

Если вы переходите на iOS 7, вы должны использовать ограничение Auto Layout для привязки к руководству Bottom Layout. Управляйте перетаскиванием из своего вида в руководство по Bottom Layout и выберите Vertical Space из всплывающего меню.

Использование фреймов в iOS 7 сложнее и уходит в прошлое.

Поначалу Auto Layout трудно понять, но он очень силен, как только вы его почувствуете.

Другие вопросы по тегам