2015-05-12 2 views
1

Я устанавливаю прозрачное свойство своего навигатора в НЕТ через прокси-сервер UINavigationBar в своем AppDelegate.Строка состояния, полностью меняющая черту при использовании клипов. Точки = YES в iOS8. Как мне это изменить?

Затем, чтобы избавиться от разделителя высоты 1 пикселя между UINavigationBar и моим представлением ниже, в моем ViewController, я устанавливаю self.navigationcontroller.navigationbar.clipsToBounds = YES;.

Это удалить разделитель и достичь эффекта, похожее на это ...

enter image description here

Там в дополнительный вид с датами под ним в UINavigationBar.

Однако, когда я начинаю использовать clipToBounds = YES, моя строка состояния полностью черная. Я не хочу этого. Я хочу, чтобы он был «синим», точно так же, как на фотографии для этого приложения CBS Sports.

Как изменить цвет строки состояния или почему мой цвет из панели навигации больше не продолжается до строки состояния? [Кроме того, я использую встроенный навигационный контроллер, а не тот, который я вытащил на просмотр]

ответ

3

Не устанавливайте clipsToBounds на YES. Способ работы расширенных баров заключается в том, что слой вытягивается за пределы его границы до строки состояния.

У вас есть два варианта. Один из них заключается в удалении разделителя с использованием обмана времени выполнения, о котором я объяснил, как это сделать в this answer.

Поскольку ваш корпус не содержит прозрачную навигационную панель, это будет намного проще. То, что вы хотите, чтобы установить это shadowImage быть пустым, так как:

self.navigationcontroller.navigationbar.shadowImage = [UIImage alloc]; 

Но вы заметите это не работает сразу. В документации упоминается, что это не будет работать, пока фоновое изображение не будет установлено с использованием одного из методов setBackgroundImage:. Поскольку ваш бар не прозрачен и имеет один цвет, вы можете создать изображение шириной 1x1px с цветом и установить его как фоновое изображение.

+0

Я только что осознал потенциальную проблему. Таким образом, у меня есть изображение 1x1px с настройками Nav Nav по умолчанию. Тем не менее, я разрешаю своим пользователям выбирать несколько цветных тем в приложении. Они могут меняться от синего до красного до оранжевого и многих других цветов. Я меняю все, включая изображения, используя их маски. Является ли это решение мешающим мне сделать это, если мне нужно, чтобы изображение шириной 1x1px было статическим? –

+0

Нет, потому что вы можете создать изображение с цветом. Я думаю, что мое другое решение будет лучше для вас. Взгляните на мою ссылку. –

+0

ОК, так что мне просто нужно скрыть это uiimageview как скрытое? Является ли это дополнительным представлением панели nab? Так что я просто перебираю детей наб, чтобы найти его? –

3

Проблема заключается в том, что когда вы устанавливаете clipsToBounds в true, вы теряете верхнюю часть строки состояния. То, что я делаю, поэтому, как раз наоборот, что вы делаете - я сделать панель навигации абсолютно прозрачны:

self.navbar.backgroundColor = UIColor.clearColor() 
    self.navbar.translucent = true 
    self.navbar.setBackgroundImage(UIImage(), forBarMetrics:.Default) 
    self.navbar.clipsToBounds = true 

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

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