Я безуспешно пытался удалить границу навигационных панелей. Я исследовал, и люди, кажется, говорят, что для shadowImage и BackgroundImage нужно значение nil, но в моем случае это не работает.
Мой код
self.navigationController?.navigationBar.barTintColor = UIColor(rgba: "#4a5866")
self.navigationController?.navigationBar.setBackgroundImage(UIImage(named: ""), forBarMetrics: UIBarMetrics.Default)
self.navigationController?.navigationBar.shadowImage = UIImage(named: "")
иллюстрации:
источник
Swift 4 и Swift 5
Удаление границы:
Восстановление границы:
источник
это полностью удалит теневое изображение
источник
В Swift 2 это можно сделать следующим образом:
Файл AppDelegate
Внутри приложения func (..., didFinishLaunchingWithOptions launchOptions: ...)
для Swift 3:
источник
Просто напишите это в расширении UINavigationBar
И в вашем viewController ...
И чтобы отменить это для любого viewController, просто передайте false.
источник
Установите
barStyle
на.Black
перед установкой оттенка:источник
Swift 5
При использовании setBackgroundImage / shadowImage, чтобы скрыть линию роста волос, есть небольшая задержка. Этот метод убирает задержку. Кредит для Chameleon Framework . Это метод, который они используют (в ObjC)
источник
Ответ Луки Даванцо отличный, но он не работает в iOS 10. Я изменил его, чтобы он работал в iOS 10 и ниже.
Вы также можете расширить UINavigationController и отключить его от этого.
removeFromSuperview()
on the line не будет работать на iOS 10, поэтому я просто установил альфа в 0, чтобы этот вызов был совместим везде.источник
height >= 1.0
. На моделях iPhone с 3-кратным увеличением сетчатки (например, 8 Plus, XR ...) линия роста волос имеет высоту 0,33.Чтобы удалить границу из UINavigationBar в Swift 3+, используйте:
источник
для Swift 3
в
viewDidLoad
методеисточник
Только это сработало для меня,
ссылка
источник
Обновлено для Swift 4 на случай, если кому-то интересно
Теперь это еще менее многословно.
источник
Вот как это сделать, если вы хотите сделать это без изменения цвета фона:
ПРИМЕЧАНИЕ. Это может привести к сбою в производственном приложении. По-видимому, NavigationBar не любит, когда его вид исчезает
источник
Принятый ответ сработал для меня, но я заметил, что когда я хотел, чтобы теневое изображение снова появлялось при переходе назад или переходе к другому виртуальному компьютеру, на панели навигации было заметное мигание.
Используя этот метод
navigationController?.navigationBar.setValue(true, forKey: "hidesShadow")
в viewWillAppear, полоса тени скрыта в текущем контроллере видимого представления.Используя эти 2 метода
в viewWillDisappear мигание все еще происходит, но только тогда, когда снова появляется теневое изображение, а не сама панель навигации.
источник
для swift3 вы должны написать немного иначе:
источник
Это упрощенная версия ответа Гаурав Чандарана .
источник
Представитель приложения
источник
Если вы хотите удалить только нижнюю строку и сохранить сплошной цвет панели навигации, добавьте эти строки кода в viewDidLoad: Swift 3, 4:
Мир!
источник
Линия границы - это UIImageView, и при удалении подпредставления, которое является imageView, удаляются элементы barButtonItem с UIImageView. Код ниже поможет вам удалить его. Надеюсь, это поможет кому-то, кто сталкивался с такой проблемой, как я.
Граница UIImageView имеет высоту всего 0,5, поэтому этот код удаляет только ее.
источник
В AppDelegate это глобально изменило формат NavBar и удалило нижнюю строку / границу:
Не удалось реализовать что-то другое на конкретном венчурном капитале, но это поможет 90% людей
источник
это ответ в быстрой базе 3 ответа Нейта Кука
источник
iOS 11 и Swift 4 Если вы хотите удалить границу, но не делать полупрозрачной навигационной панели, попробуйте выполнить следующие действия.
self.navigationBar.shadowImage = UIImage()
источник
в вашем настраиваемом navigationController добавьте эти строки:
Важная заметка
последняя строка важна, если вы используете метод viewDidLoad () первой строки, потому что navigationController должен перерисовывать панель навигации, но вы можете легко использовать это без layoutIfNeeded () в методе viewWillAppear () до того, как он отобразит панель навигации
источник
Более быстрый метод Джека Чена:
С помощью:
источник
источник