2016-06-24 7 views
7

Ich habe den folgenden Code, um die Navigationsleiste transparent, aber trotzdem noch die Zurück-Taste die Anzeige zu machen, das funktioniert auf allen Versionen von iOS, aber seine mit der Beta iOS 10 funktioniert nichtWie Navigationsleiste transparent in iOS 10

navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default) 
    navigationBar.shadowImage = UIImage() 
    navigationBar.isTranslucent = true 

Hat sich in diesem Bereich etwas mit iOS 10 geändert?

Hinweis sein nicht möglich navigationBar.isHidden zu verwenden, wie dies auch in der Navigationsleiste Zurück-Taste und Titel usw. verschwinden würde.

Antwort

10

Ich weiß nicht, was in iOS 10 geändert wurde, um den vorherigen Code zu stoppen, aber um es zu beheben, erstellte ich ein transparentes Bild (es muss nur ein Pixel in der Dimension sein) und den folgenden Code zu verwenden Die Navigationsleiste ist transparent (zeigt aber immer noch die Navigationstaste zurück).

let redPixel = UIImage(named: "RedPixel") 
    navigationBar.setBackgroundImage(redPixel, for: UIBarMetrics.default) 
    navigationBar.shadowImage = redPixel 
    navigationBar.isTranslucent = false 
6

Die Lösung @Essence Werke zur Verfügung gestellt perfekt:

let transparentPixel = UIImage(named: "TransparentPixel") 
    navigationBar.setBackgroundImage(transparentPixel, for: UIBarMetrics.default) 
    navigationBar.shadowImage = transparentPixel 
    navigationBar.backgroundColor = UIColor.clear() 
    navigationBar.isTranslucent = true 

Übrigens, wenn Sie die Farbe der Navigationsleiste ändern möchten, können Sie das gleiche Prinzip verwenden können!
Dies ist, was auch die 1px transparentes Bild von Code zu erstellen Ich verwende:

class MainClass: UIViewController { 

    let transparentPixel = UIImage.imageWithColor(color: UIColor.clear) 

    override func viewWillAppear(_ animated: Bool) { 
    drawCustomNavigationBar() 
    } 

    func drawCustomNavigationBar() { 
    let nav = (self.navigationController?.navigationBar)! 
    nav.setBackgroundImage(transparentPixel, for: UIBarMetrics.default) 
    nav.shadowImage = transparentPixel 
    nav.isTranslucent = true 
    } 
} 

extension UIImage { 
    class func imageWithColor(color: UIColor) -> UIImage { 
    let rect = CGRect(origin: CGPoint(x: 0, y:0), size: CGSize(width: 1, height: 1)) 
    UIGraphicsBeginImageContext(rect.size) 
    let context = UIGraphicsGetCurrentContext()! 

    context.setFillColor(color.cgColor) 
    context.fill(rect) 

    let image = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 

    return image! 
    } 
} 
1

Swift 3.x

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