2013-08-16 4 views
33

Я использую такое же приложение в iOS6 и iOS7, у которого есть NavigationBar. Он отлично работает на iOS6, но в iOS7 все выглядит немного по-другому, так как он вообще не рассматривает панель навигации.ios 7 Проблема с рамкой UiView

Я попытался изменить свойство topbar в параметрах моделируемых показателей, но он не работает. Он рассматривает позицию кнопки из NavigationBar в iOS6, но в iOS7 она рассматривает ее сверху экрана.

В чем причина этого?

Заранее спасибо.

iOS 6 Screenshot

iOS 7 Screenshot

ответ

53

Вы должны использовать ниже линии для исправить это в вашем представлении.

self.edgesForExtendedLayout = UIRectEdgeNone; 
+0

да его работающий штраф для меня. но у моего приложения есть Tabbacontroller alos. Остальная часть viewcontroller работает нормально. Ошибка в контроллере представления таблиц. предположим, что у меня 5 вкладок. 1. Когда я нажимаю на вкладку (открывается экран списка), она отлично работает, когда я нажимаю на подробное описание списка. до его рабочего уровня 2. Когда я нажимаю на вкладку 2 (другой список), открываю. это время, когда я нажимаю кнопку tab1, чем основной экран представления экрана, уменьшает до 64 пикселей. я пытался сильно увеличить, но не работает .. что я могу сделать в этом случае ?? – Hitarth

+2

Я думаю, что лучше проверить перед установкой этого свойства: '[self responsesToSelector: @selector (edgeForExtendedLayout)]' – jianpx

5

Во время этого ответа, IOS 7 все еще под NDA, так что не было возможности написать реальное решение. В любом случае, я добавил ссылку для помощи, доступную только зарегистрированным разработчикам.

==== Оригинал сообщения: ====

Читать iOS 7 Transition Guide. В разделе «Обновление пользовательского интерфейса» объясняется, как исправить вашу проблему.

+0

RTFM = down vote! – TheRonin

+2

Во время моего сообщения iOS 7 все еще находилась под NDA, поэтому единственной возможностью помочь было указать на официальное руководство, к которому имеют доступ только зарегистрированные разработчики. – Tafkadasoh

+1

@Tafkadasoh Я понимаю вашу дилемму и ценю ваши усилия, чтобы помочь, независимо от NDA. Я бы (с уважением) предположил, что вам было бы лучше, если бы вы упомянули NDA в своем первоначальном ответе, а затем уточнили, где именно найти ответ на вопрос, то есть: «Это все еще под NDA, однако оно документировано на странице NNN руководства по переходу iOS7 ... ». Таким образом, вы создали бы более полезный ответ и не открывали себя до голосования. –

14

В «Руководстве по переходу на iOS 7 UI» для макета и внешнего вида, о котором также упоминалось - в iOS7 in, контроллеры просмотра используют полноэкранную компоновку.

Если мы хотим, чтобы представление отображало следующее местоположение на панели навигации, вы можете изменить грани этого объекта для параметра UIViewControllerForExtendedLayout.

edgeForExtendedLayout - это атрибут типа UIExtendedEdge, который указывает направление расширяемого края.

Поскольку iOS7 поддерживает полноэкранную компоновку, его значение по умолчанию является естественным для UIRectEdgeAll, причем оба они распространяются по краю, то есть, если есть даже view navigationBar, в tabBar, то представление увеличит охват в окрестностях ,

Если мы сделаем следующий вид настроек, представление не будет распространено на те, что находятся за панелью, поэтому ярлык вышел. View Source Print

self . edgesForExtendedLayout = UIRectEdgeNone ; 
+1

Использование 'edgeForExtendedLayout' не делает трюк для меня. Я добавляю его в метод viewDidLoad. Любая помощь будет заметна. – Priyanka

+0

Я реализовал приложение 4-5, его работа. Можете ли вы описать свой сценарий? – PK86

+0

Я подтверждаю это. Он работает, вы должны поместить его в каждое окно –

8

В прошивке 7, просматривать контроллеры используют макет полноэкранного. он упоминается в IOS 7 UI Transition Guide

, если вы хотите изменить макет использовать edgesForExtendedLayout свойство

пример:

if([UIViewController instancesRespondToSelector:@selector(edgesForExtendedLayout)]) 

     self.edgesForExtendedLayout=UIRectEdgeNone; 
+1

да его работающий штраф для меня. но у моего приложения есть Tabbacontroller alos. Остальная часть viewcontroller работает нормально. Ошибка в контроллере представления таблиц. предположим, что у меня 5 вкладок. 1. Когда я нажимаю на вкладку (открывается экран списка), она отлично работает, когда я нажимаю на подробное описание списка. до его рабочего уровня 2. Когда я нажимаю на вкладку 2 (другой список), открываю. это время, когда я нажимаю кнопку tab1, чем основной экран представления экрана, уменьшает до 64 пикселей. я пытался сильно увеличить, но не работает .. что я могу сделать в этом случае ?? – Hitarth

3
if([self respondsToSelector:@selector(edgesForExtendedLayout)]) 
    [self setEdgesForExtendedLayout:UIRectEdgeBottom]; 
5

У меня был подобный вопрос сам и обнаружил, что если выключить полупрозрачность навигационной панели мнения упадет так же, как они это делали в iOS6.

self.navigationController.navigationBar.translucent = NO; 
+0

это было здорово! спас мне часы работы. Благодарю. –