Как исправить пустое пространство размером 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 трудно понять, но он очень силен, как только вы его почувствуете.