2014-11-26 2 views
0

У Flickr есть великолепный контроллер представления настроек (даже если они нажимают кнопку закрытия с неправильной стороны!), И я хочу знать, как я могу добиться аналогичного эффекта.Удалить UINavigationBar фон и сохранить тень

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

Как бы вы это достигли - как вы могли удалить фон UINavigationBar? Обратите внимание: вы не можете просто удалить фон, потому что при прокрутке текст появится на панели навигации.

enter image description here

+0

http://stackoverflow.com/a/18969823/1702413 – TonyMkenu

+0

@TonyMkenu К сожалению, это приводит к текстовому показу в контроллере нав, когда вы прокрутите вниз, но если вы скажете ей не продлевать под верхней панелью эффект размытия не отображается под этой областью. Мне нужно каким-то образом сохранить представление под верхней панелью, но не показывать ничего в области навигационной панели при прокрутке. – Joey

ответ

0

Я смог получить желаемое поведение, предварительно предотвратив распространение содержимого контроллеров табличных представлений под верхней навигационной панелью с помощью параметра «Расширить края».

Чтобы удалить внешний вид панели навигации, я сделал это черный полупрозрачный бар, а затем добавило новый пустой файл для его фонового изображения, как так:

self.navigationController?.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default) 

я встроенный навигационный контроллер в цели контейнера, который встроен в обычный контроллер просмотра, причем ограничения автоматического макета установлены так, что вид контейнера заполняет представление. Это позволило мне создать эффект размытия в контроллере представления, а затем удалить цвет фона из контроллеров табличных представлений, чтобы этот эффект размытия можно было увидеть во время навигации. Вот установка:

UIViewController 
    containerView 
     UINavigationController 
      UITableViewController -> 
      UITableViewController -> 
      UITableViewController... 
0

Используйте UILabel вместо навигационной панели (они, вероятно, сделать samething, судя по высоте столбика). Теневая линия - это просто другое представление с соответствующим цветом фона.

+0

Несомненно, это не фиксированная метка, этот интерфейс прокручивается, и заголовок всегда прилипает к вершине. – Joey

+0

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

+0

Другая проблема заключается в том, что этот интерфейс должен поддерживать push-навигацию, поэтому должен быть навигационный контроллер. Прозрачная метка также будет страдать от той же проблемы, что и прозрачная панель навигации - когда вы прокручиваете содержимое, оно будет видимым внутри границ метки. Интересно, как Фликр обошел это. – Joey

0

Скрытие фонового изображения действительно показывает текст, под которым при прокрутке. Один из способов, я думаю, вы можете попытаться достичь этого - это не расширение ScrollView под NavBar? Другим было бы создание фона, используя моментальный снимок исходного представления, и использование этого в качестве фонового изображения для navBar - надеюсь, что это поможет.

+0

Изменение вида прокрутки звучит как хороший подход, но я не знаю, как вы можете это сделать, помимо перемещения всего представления под навигационной панелью, что, конечно же, не приведет к желаемому пользовательскому интерфейсу. – Joey

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