Сделайте UINavigationBar прозрачным - PullRequest
224 голосов
/ 23 февраля 2010

Как сделать прозрачным UINavigationBar ? Хотя я хочу, чтобы элементы бара оставались видимыми.

Ответы [ 17 ]

2 голосов
/ 15 декабря 2010

Попробуйте следующий фрагмент кода:

self.navigationController.navigationBar.translucent = YES;
1 голос
/ 05 ноября 2015

Другой способ, который сработал для меня, это создать подкласс UINavigationBar и оставить метод drawRect пустым !!

@IBDesignable class MONavigationBar: UINavigationBar {


// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
override func drawRect(rect: CGRect) {
    // Drawing code
}}
0 голосов
/ 27 сентября 2018

Проверка RRViewControllerExtension , которая предназначена для управления внешним видом UINavigation bar.

с RRViewControllerExtension в вашем проекте, вам просто нужно переопределить

-(BOOL)prefersNavigationBarTransparent;

в вашем viewcontroller.

navigation bar tranparent

0 голосов
/ 26 сентября 2015

Это работает для Swift 2.0.

navigationController!.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default)
navigationController!.navigationBar.shadowImage = UIImage()
navigationController!.navigationBar.translucent = true
0 голосов
/ 18 октября 2018
extension UINavigationBar {
var isTransperent: Bool {
        get {
            return false // Just to satisfy property
        }
        set {
            if newValue == true {
                self.shadowImage   = UIImage()
                self.isTranslucent = true
                self.setBackgroundImage(UIImage(), for: .default)
            }else{
                self.shadowImage   = UIImage()
                self.isTranslucent = false
                self.setBackgroundImage(nil, for: .default)
            }
        }
    }
}
0 голосов
/ 05 марта 2019

In Swift 4.2

self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.isTranslucent = true

(в viewWillAppear), а затем в viewWillDisappear, чтобы отменить его, поставьте

self.navigationController?.navigationBar.shadowImage = nil
self.navigationController?.navigationBar.isTranslucent = false
0 голосов
/ 23 февраля 2010

Вы имеете в виду полностью прозрачный или использование полупрозрачно-черного стиля, видимого в приложении Photos? Последнее вы можете сделать, установив для свойства barStyle значение UIBarStyleBlackTranslucent. Бывший ... я не уверен в этом. Если вы хотите, чтобы элементы на нем все еще были видны, вам, возможно, придется покопаться в иерархии представлений панели и удалить представление, содержащее его фон.

...