Приложение раскадровки работает на iOS 7 нормально, но панель навигации смещается на iOS 6.1

Во время перестройки моего проекта с новым Xcode 5, выпущенным вчера, я был разочарован, увидев, что мой контроллер представления раскадровки встряхнулся.

После многих попыток что-то исправить, я должен заключить, что застрял с одной оставшейся проблемой: Контроллер представления навигации заставляет панель навигации перекрываться содержимым представления. При этом приложение нормально работает на устройстве iOS 7 (без перекрытия), но на устройстве iOS 6.1 панель навигации перекрывается.

Я запустил пример проекта из FlatUI, чтобы перепроверить проблему, и у них та же проблема. Любая идея, пожалуйста?


person Stéphane de Luca    schedule 11.09.2013    source источник
comment
На самом деле ответ заключается в флагах Extends Edges в IB: просто снимите флажок Under Top Bar, и все готово.   -  person Stéphane de Luca    schedule 12.09.2013
comment
Стефан де Лука: Я столкнулся с той же проблемой, о каком флаге вы говорите?   -  person Mrunal    schedule 16.09.2013
comment
Он имеет в виду в инспекторе атрибутов для контроллера представления Расширить края. Есть варианты «Под верхними стержнями», «Под нижними стержнями», «Под непрозрачными стержнями».   -  person Sofi Software LLC    schedule 25.10.2013


Ответы (5)


Вы столкнулись с проблемой из-за системы координат, системы координат iOS 6 и iOS 7 отличаются. iOS 7 использует по умолчанию translucent properties.

Попробуйте ввести этот код в viewDidLoad

if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1)
{
     self.edgesForExtendedLayout=NO;
}
person Krunal    schedule 13.09.2013

Я думаю, это из-за системы координат iOS 6 и iOS 7.

Пожалуйста, проверьте следующие два изображения.

iOS 6:

введите здесь описание изображения

IOS 7 :

введите здесь описание изображения

person imDeveloper    schedule 13.09.2013
comment
Как решить эту проблему ? я также сталкиваюсь с той же проблемой, мой вид смещается вверх в iOS 7 - person Krunal; 13.09.2013
comment
Чтобы решить эту проблему, вы должны вручную проверить программно if(iOS7) { view.frame = CGRectmake(view.frame.origin.x,view.frame.origin.y,view.frame.size.width,view.frame.size .height + высота строки состояния + любая высота (вы добавили высоту); anyBar заменит следующую панель навигации = 44 pts Панель вкладок = 49. Вы должны добавить эти значения в свой фрейм, что бы вы ни использовали, если оба, то добавьте оба значения} - person imDeveloper; 13.09.2013
comment
Я сделал дизайн в .xib как мне изменить рамку? - person Krunal; 13.09.2013
comment
Вероятно, я думаю, что нет способа сделать это с помощью xib. - person imDeveloper; 13.09.2013

Как я сказал в комментарии: в IB (построитель интерфейса) вам нужно перейти в «Инспектор атрибутов» для контроллера представления и посмотреть на атрибут «Расширить края»: просто снимите флажок «Под верхней панелью», и вы готово.

person Stéphane de Luca    schedule 06.06.2014

В построителе интерфейса на вкладке инспектора размера есть раздел под названием iOS 6/7 Delta, где вы можете исправить проблему с панелью навигации или когда некоторые элементы управления имеют другой размер в ios7, чем в ios6.

person cl3m    schedule 03.10.2013

Вы должны сделать две вещи: -

а. выберите этот конкретный xib или вид в раскадровке и посмотрите на правой панели, есть опция расширенных краев, отличная от первой опции. теперь это идеально сместит ваш взгляд вниз.

b. все содержимое в этом представлении также будет смещено ниже, поэтому вам необходимо установить дельта-фактор - (x пикселей) для ios7 и + (пикселей) для ios6. Для настройки 6 и 7 вы должны выбрать опцию «просмотреть как» на правой панели xib.

Удачного кодирования

person Rinku Sadhwani    schedule 06.06.2014