webentwicklung-frage-antwort-db.com.de

transparente Navigationsleiste ios

Ich erstelle eine App und habe im Internet gesucht und ich frage mich, wie sie diese transparente Navigationsleiste so machen: 

 enter image description here

Ich habe folgendes wie in meiner appdelegate hinzugefügt:

UINavigationBar.appearance().translucent = true

aber das sieht nur so aus:

 enter image description here

Wie kann ich die Navigationsleiste wie das erste Bild transparent machen? 

78
Peter Pik

Sie können das Navigationsleistenbild wie folgt für Transluzent anwenden.

Ziel c:

[self.navigationController.navigationBar setBackgroundImage:[UIImage new]
                     forBarMetrics:UIBarMetricsDefault]; //UIImageNamed:@"transparent.png"
self.navigationController.navigationBar.shadowImage = [UIImage new];////UIImageNamed:@"transparent.png"
self.navigationController.navigationBar.translucent = YES;
self.navigationController.view.backgroundColor = [UIColor clearColor];

Swift 3:

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

Hoffe es hilft dir ..!

203
Vidhyanand

Schnelle Lösung

Dies ist der beste Weg, den ich gefunden habe. Sie können es einfach in Ihre appDelegatedidFinishLaunchingWithOptions Methode einfügen:

Swift 3/4

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
    // Sets background to a blank/empty image
    UINavigationBar.appearance().setBackgroundImage(UIImage(), for: .default)
    // Sets shadow (line below the bar) to a blank image
    UINavigationBar.appearance().shadowImage = UIImage()
    // Sets the translucent background color
    UINavigationBar.appearance().backgroundColor = .clear
    // Set translucent. (Default value is already true, so this can be removed if desired.)
    UINavigationBar.appearance().isTranslucent = true
    return true
}

Swift 2.0

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    // Override point for customization after application launch.
    // Sets background to a blank/empty image
    UINavigationBar.appearance().setBackgroundImage(UIImage(), forBarMetrics: .Default)
    // Sets shadow (line below the bar) to a blank image
    UINavigationBar.appearance().shadowImage = UIImage()
    // Sets the translucent background color
    UINavigationBar.appearance().backgroundColor = UIColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 0.0)
    // Set translucent. (Default value is already true, so this can be removed if desired.)
    UINavigationBar.appearance().translucent = true

    return true
}

source: Navigationsleiste in Bezug auf das folgende Bild in iOS 8.1 transparent machen

95
Dan Beaulieu

Swift 3: Erweiterung für Transparente Navigationsleiste

extension UINavigationBar {
    func transparentNavigationBar() {
    self.setBackgroundImage(UIImage(), for: .default)
    self.shadowImage = UIImage()
    self.isTranslucent = true
    }
}
9

Was für mich funktioniert hat:

    let bar:UINavigationBar! =  self.navigationController?.navigationBar
    self.title = "Whatever..."
    bar.setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default)
    bar.shadowImage = UIImage()
    bar.alpha = 0.0 

Ich konnte dies in Swift auf folgende Weise erreichen:

let navBarAppearance = UINavigationBar.appearance()
let colorImage = UIImage.imageFromColor(UIColor.morselPink(), frame: CGRectMake(0, 0, 340, 64))
navBarAppearance.setBackgroundImage(colorImage, forBarMetrics: .Default)

dabei habe ich die folgende Dienstprogrammmethode in einer UIColor-Kategorie erstellt:

imageFromColor(color: UIColor, frame: CGRect) -> UIImage {
  UIGraphicsBeginImageContextWithOptions(frame.size, false, 0)
  color.setFill()
  UIRectFill(frame)
  let image = UIGraphicsGetImageFromCurrentImageContext()
  UIGraphicsEndImageContext()
  return image
}
7
Julian B.

Swift 4.2 Lösung: Für transparenten Hintergrund:

  1. Für den allgemeinen Ansatz:

    override func viewDidLoad() {
        super.viewDidLoad()
    
        self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
        self.navigationController?.navigationBar.shadowImage = UIImage()
        self.navigationController?.navigationBar.isTranslucent = true
    
    }
    
  2. Für ein bestimmtes Objekt:

    override func viewDidLoad() {
        super.viewDidLoad()
    
        navBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
        navBar.shadowImage = UIImage()
        navBar.navigationBar.isTranslucent = true
    
    }
    

Ich hoffe es ist nützlich.

5

Legen Sie die Hintergrundeigenschaft Ihrer Navigationsleiste fest, z.

navigationController?.navigationBar.backgroundColor = UIColor(red: 1.0, green: 0.0, blue: 0.0, alpha: 0.5)

(Möglicherweise müssen Sie dies ein wenig ändern, wenn Sie keinen Navigationscontroller haben. Dies sollte Ihnen jedoch eine Vorstellung davon geben, was zu tun ist.)

Stellen Sie außerdem sicher, dass sich die Ansicht darunter tatsächlich unter der Leiste erstreckt.

4
Atomix

Versuchen Sie dies, es funktioniert für mich, wenn Sie auch ios7 unterstützen müssen. Es basiert auf der Transparenz von UItoolBar:

[self.navigationController.navigationBar setBackgroundImage:[UIImage new]
                                                  forBarMetrics:UIBarMetricsDefault];
    self.navigationController.navigationBar.shadowImage = [UIImage new];
    self.navigationController.navigationBar.translucent = YES;
    self.navigationController.view.backgroundColor = [UIColor clearColor];
    UIToolbar* blurredView = [[UIToolbar alloc] initWithFrame:self.navigationController.navigationBar.bounds];
    [blurredView setBarStyle:UIBarStyleBlack];
    [blurredView setBarTintColor:[UIColor redColor]];
    [self.navigationController.navigationBar insertSubview:blurredView atIndex:0];
2
EmilDo

Wenn Sie dies in Swift 4 programmgesteuert tun möchten, während Sie dieselbe Ansicht beibehalten,

if change {
        navigationController?.navigationBar.isTranslucent = false
        self.navigationController?.navigationBar.backgroundColor = UIColor(displayP3Red: 255/255, green: 206/255, blue: 24/255, alpha: 1)
        navigationController?.navigationBar.barTintColor = UIColor(displayP3Red: 255/255, green: 206/255, blue: 24/255, alpha: 1)
    } else {
        navigationController?.navigationBar.isTranslucent = true
        navigationController?.navigationBar.setBackgroundImage(backgroundImage, for: .default)
        navigationController?.navigationBar.backgroundColor = .clear
        navigationController?.navigationBar.barTintColor = .clear
    }

Eine wichtige Sache, die Sie sich merken sollten, ist das Klicken auf diese Schaltfläche in Ihrem Storyboard. Ich hatte lange Zeit ein Problem mit einem springenden Display. Stellen Sie sicher, dass Sie Folgendes einstellen:  enter image description here

Wenn Sie dann die Durchsichtigkeit der Navigationsleiste ändern, werden die Ansichten nicht springen, da sich die Ansichten ganz nach oben erstrecken, unabhängig von der Sichtbarkeit der Navigationsleiste.

1
paul_f

Swift 5 gilt nur für den aktuellen Ansichtscontroller

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    // Make the navigation bar background clear
    navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
    navigationController?.navigationBar.shadowImage = UIImage()
    navigationController?.navigationBar.isTranslucent = true
}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)

    // Restore the navigation bar to default
    navigationController?.navigationBar.setBackgroundImage(nil, for: .default)
    navigationController?.navigationBar.shadowImage = nil
}
0
Chris Chute

Fügen Sie dies in Ihrem Ladevorgang hinzu

self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.backgroundColor = UIColor(red: 1, green: 1, blue: 1, alpha: 0.0)
//adjust alpha according to your need 0 is transparent 1 is solid
0
Abhishek Maurya

Für diejenigen, die eine OBJC-Lösung suchen, die in der App Delegate-Methode didFinishLaunchingWithOptions hinzugefügt wird:

[[UINavigationBar appearance] setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
[UINavigationBar appearance].shadowImage = [UIImage new];
[UINavigationBar appearance].backgroundColor = [UIColor clearColor];
[UINavigationBar appearance].translucent = YES;
0
david72

Dienstprogrammmethode, die Sie durch Übergeben von navigationController und Farbe aufrufen, die Sie in der Navigationsleiste einstellen möchten Für transparent können Sie clearColor der UIColor-Klasse verwenden.

Für Ziel C - 

+ (void)setNavigationBarColor:(UINavigationController *)navigationController 
                               color:(UIColor*) color {
   [navigationController setNavigationBarHidden:false animated:false];
   [navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
   [navigationController.navigationBar setShadowImage:[UIImage new]];
   [navigationController.navigationBar setTranslucent:true];
   [navigationController.view setBackgroundColor:color];
   [navigationController.navigationBar setBackgroundColor:color];
}

Für Swift 3.0 - 

class func setNavigationBarColor(navigationController : UINavigationController?, 
                                 color : UIColor) {
    navigationController?.setNavigationBarHidden(false, animated: false)
    navigationController?.navigationBar .setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default)
    navigationController?.navigationBar.shadowImage = UIImage()
    navigationController?.navigationBar.translucent = true
    navigationController?.view.backgroundColor = color
    navigationController?.navigationBar.backgroundColor =  color
}
0
Rahul