2015-11-03 4 views
3

У меня есть вид с прозрачным UINavigationBar и UITableView около 10px под ним. В фоновом режиме есть UIImageView с крутым многоугольным изображением, которое я оживляю в параллаксе для перехода к просмотру.setNavigationBar полупрозрачный толкает вид вниз

Вот код для прозрачной панели навигации:

self.navigationController.navigationBar.shadowImage = [UIImage new]; 
self.navigationController.navigationBar.translucent = YES; 
[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault]; 

Я не использую раскадровки вообще для этого проекта

У меня также есть кнопка плавающих действий вниз в нижней части правильно. Заголовок навигационной панели UILabel Я добавил в titleView для обмена UITextField для функции поиска при нажатии правой кнопки навигации. Когда это происходит, я устанавливаю

self.navigationController.navigationBar.translucent = YES;

Это все работает хорошо, за исключением того, что, установив translucent = NO вид толкает все содержимое вниз на высоту панели навигации.

enter image description here Search Mode

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

+0

Мне любопытно: почему вы пытаетесь заставить макет Android в своем приложении iOS? Вам не кажется, что вы должны придерживаться стилей платформы? – Cabus

+0

Это хороший вопрос. Я, как правило, выступаю за то, чтобы приложения выглядели и чувствовали себя «родными». Однако в этом случае мне очень понравился интерфейс, который был разработан для Android-версии этого приложения нашим дизайнером. Использование Hangouts или Inbox на iOS - это радость, и я считаю, что с учетом правильного внимания это приложение также будет выглядеть и прекрасно себя чувствовать. – d2burke

+0

Хорошо, тогда :). Это действительно выглядит довольно аккуратно. И, возможно, некоторые новые взгляды, увидев один и тот же UITabBar в сотнях приложений, будут достаточно освежающими. Без обид btw – Cabus

ответ

8

Свойство, которое вы хотите установить, это extendedLayoutIncludesOpaqueBars, если для этого свойства установлено значение YES, тогда ваш вид будет выглядеть так же, как если бы панель навигации была полупрозрачной.

Вы упомянули, что вы не используете раскадровки, но для других, которые делают это, можно установить в Инспекторе атрибутов для контроллера вида в разделе «Расширить края», отметив флажок «Под непрозрачными барами».

+0

Работает отлично! Спасибо @geraldWilliam – d2burke

Смежные вопросы