2015-02-26 4 views
1

У меня есть UINavigationItem (не UINavigationBar), что я хотел бы сделать прозрачным или непрозрачным. Это создается, когда я создаю связь с контроллером корневого представления с контроллера навигации с моим подклассом UIViewController.UINavigationItem Transparency

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

Есть ли способ сделать это, вставив его в какой-либо вид или получив указатель на какой-либо объект, который имеет эту возможность?

Вот раскадровка, показывающая иерархию контроллера вида. Вы можете видеть UINavigationItem как прямой потомок контроллера вида. Обратите внимание на то, что не существует явная ссылка на UINavigationBar:

enter image description here

Вот изображение секции навигации в верхней части моей UIViewController, когда он делает. Я хотел бы изменить светло-серый, чтобы соответствовать темно-серый, который вы можете увидеть чуть ниже:

enter image description here

ответ

1

Из документов:

В прошивкой 5.0 и более поздней версии, можно настроить внешний вид панели, используя методы, перечисленные в пользовательской настройке внешнего вида панели. Вы можете настроить внешний вид всех навигационных панелей с помощью прокси-сервера внешнего вида ([внешний вид UINavigationBar]) или всего лишь одного бара.

В iOS 7 оттенок оттенка навигационной панели влияет на цвет изображения заднего фона, заголовков кнопок и изображений кнопок. Свойство barTintColor влияет на цвет самого бара. Кроме того, по умолчанию полосы навигации полупрозрачны. Выключение или выключение прозрачности не влияет на кнопки, поскольку они не имеют фона.

+0

Моя дилемма заключается в том, что у меня нет явного 'UINavigationBar' (см. Образ раскадровки в моем сообщении). Если бы у меня была ссылка на бар, я бы все поставил. Вы знаете, как я могу получить ссылку на бар? – Alex

+1

Контроллер вашего представления находится внутри 'UINavigationController', правильно? Таким образом, из вашего контроллера содержимого будет «self.navigationController.navigationBar». – mifki

+1

'self.navigationControoler.navigationBar' был именно тем, что я искал. Огромное спасибо! – Alex