Próbowałem usunąć obramowanie NavigationBars bez powodzenia. Zbadałem i ludzie wydają się mówić, aby ustawić shadowImage i BackgroundImage na zero, ale to nie działa w moim przypadku.
Mój kod
self.navigationController?.navigationBar.barTintColor = UIColor(rgba: "#4a5866")
self.navigationController?.navigationBar.setBackgroundImage(UIImage(named: ""), forBarMetrics: UIBarMetrics.Default)
self.navigationController?.navigationBar.shadowImage = UIImage(named: "")
ilustracja:
źródło
Swift 4 i Swift 5
Usuwanie obramowania:
Przywracanie granicy:
źródło
spowoduje to całkowite usunięcie obrazu cienia
źródło
Dzięki Swift 2 możesz to zrobić w następujący sposób:
Plik AppDelegate
Wewnątrz aplikacji func (..., didFinishLaunchingWithOptions launchOptions: ...)
dla Swift 3:
źródło
Po prostu napisz to w rozszerzeniu UINavigationBar
A w Twoim widoku Kontroler ...
Aby cofnąć to działanie dla dowolnego elementu viewController, po prostu przekaż wartość false.
źródło
Ustaw
barStyle
na.Black
przed ustawieniem odcienia:źródło
Szybki 5
Podczas używania setBackgroundImage / shadowImage do ukrycia linii włosów występuje niewielkie opóźnienie. Ta metoda usuwa opóźnienie. Podziękowania dla Chameleon Framework . To jest metoda, której używają (w ObjC)
źródło
Odpowiedź Luca Davanzo jest świetna, ale nie działa w iOS 10. Zmieniłem ją, żeby działała w iOS 10 i niższych.
Możesz także rozszerzyć UINavigationController i wywołać to z tego.
removeFromSuperview()
na linii nie będzie działać na iOS 10, więc po prostu ustawiłem alfa na 0, więc to jedno połączenie jest kompatybilne wszędzie.źródło
height >= 1.0
. W modelach iPhone'a z 3-krotnym ekranem siatkówkowym (np. 8 Plus, XR ...) linia włosów ma wysokość 0,33.Aby usunąć obramowanie z UINavigationBar w Swift 3+, użyj:
źródło
dla szybkiego 3
w
viewDidLoad
metodzieźródło
Tylko to działało dla mnie,
Nr ref
źródło
Zaktualizowano dla Swift 4 na wypadek, gdyby ktoś się zastanawiał
Teraz jest jeszcze mniej gadatliwy.
źródło
Oto sposób, jeśli chcesz to zrobić bez zmiany koloru tła:
UWAGA: może to spowodować awarię w aplikacji produkcyjnej. Najwyraźniej pasek nawigacji nie lubi znikać widoku
źródło
Zaakceptowana odpowiedź zadziałała dla mnie, ale zauważyłem, że gdy chciałem, aby obraz cienia pojawił się ponownie po cofnięciu się lub przesunięciu do przodu do innego vc, zauważalne było mrugnięcie na pasku nawigacyjnym.
Korzystając z tej metody
navigationController?.navigationBar.setValue(true, forKey: "hidesShadow")
w viewWillAppear pasek cienia jest ukryty w kontrolerze bieżącego widocznego widoku.Korzystanie z tych 2 metod
in viewWillDisappear miganie nadal występuje, ale tylko wtedy, gdy obraz cienia pojawia się ponownie, a nie sam pasek nawigacji.
źródło
dla swift3 należy napisać nieco inaczej:
źródło
To jest uproszczona wersja odpowiedzi Gaurava Chandarany .
źródło
Delegat aplikacji
źródło
Jeśli chcesz usunąć tylko dolną linię i zachować jednolity kolor NavigationBar, dodaj te wiersze kodu w viewDidLoad: Swift 3, 4:
Pokój!
źródło
Linia graniczna to UIImageView, a usunięcie widoku podrzędnego, który jest obrazem, spowoduje usunięcie barButtonItems z UIImageView. Poniższy kod pomoże Ci go usunąć. Mam nadzieję, że pomoże to komuś, kto stanął przed problemem takim jak ja.
Obramowanie UIImageView ma tylko 0,5 wysokości, więc ten kod usuwa tylko to.
źródło
W ramach AppDelegate globalnie zmieniło to format NavBar i usuwa dolną linię / obramowanie:
Nie udało mi się zaimplementować niczego innego na konkretnym VC, ale to pomoże 90% ludzi
źródło
to jest odpowiedź w szybkiej 3 bazie odpowiedzi Nate Cooka
źródło
iOS 11 i Swift 4 Powinieneś spróbować podążać za nimi, jeśli chcesz usunąć obramowanie, ale nie chcesz, aby pasek nawigacyjny był półprzezroczysty
self.navigationBar.shadowImage = UIImage()
źródło
w swoim niestandardowym kontrolerze nawigacji dodaj następujące wiersze:
Ważna uwaga
ostatnia linia jest ważna, jeśli używasz metody viewDidLoad () pierwszej linii, ponieważ navigationController powinien przerysować pasek nawigacyjny, ale łatwo możesz go użyć bez layoutIfNeeded () w metodzie viewWillAppear (), zanim narysuje pasek nawigacji
źródło
Szybsza metoda Jacka Chena:
Za pomocą:
źródło
źródło