पारदर्शी नेविगेशन बार ios


121

मैं एक ऐप बना रहा हूं और मैंने इंटरनेट पर ब्राउज किया है और मैं सोच रहा हूं कि वे इस तरह से कैसे पारदर्शी नेविगेशनबार बनाएं:

यहाँ छवि विवरण दर्ज करें

मैंने अपने appdelegate में निम्नलिखित की तरह जोड़ा है:

UINavigationBar.appearance().translucent = true

लेकिन यह सिर्फ निम्नलिखित की तरह दिखता है:

यहाँ छवि विवरण दर्ज करें

मैं नेविगेशनबेर को पहली छवि की तरह पारदर्शी कैसे बना सकता हूं


उस कोड के साथ जिसे मैं नहीं जानता, लेकिन यदि आप CSS के साथ अच्छे हैं, तो आप एक फ्रेमवर्क (Pixate: freestyle.org ) का उपयोग कर सकते हैं , और बस अपने नेवर में CSS स्टाइल लागू कर सकते हैं :)!
निकोलस चार्वोज

जवाबों:


286

आप ट्रांसलूसेंट के लिए नीचे की तरह नेविगेशन बार इमेज लगा सकते हैं।

उद्देश्य सी:

[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];

स्विफ्ट 3:

self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default) //UIImage.init(named: "transparent.png")
self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.isTranslucent = true
self.navigationController?.view.backgroundColor = .clear

आशा है कि यह आपकी मदद करता है ..!


4
जब मैं setBackgroundImage यह barTintColor निकालता है?
पीटर पिक

आप अपने प्रति नेविगेशन bar..As की छवि प्राप्त कर सकते हैं need..and ऊपर के रूप में नेविगेशन पट्टी पर लागू होते हैं .. (छवि आप नेविगेशन पट्टी पर लागू करना चाहते)
Vidhyanand

1
नेविगेशनकंट्रोलर का बैकग्राउंडरोलर सेट करना आवश्यक नहीं है
0:15

4
इस समाधान के साथ मुझे एक ब्लैक नेविगेशनबार मिल गया है, कोई विचार?
कार्लोस डेल ब्लैंको

1
यथा अपेक्षित नहीं। जब आप इसे करते हैं, तो आपके पास 0.7 सही के अल्फा के साथ दीवार पारभासी नहीं होगी, साथ ही स्थिति पट्टी को भी कवर करेगी। यदि आप आईओएस 13 पर ऐसा करते हैं, तो आपके पास अच्छा दिखने का एक आयत और इसके ऊपर होगा, द स्टैटस बार क्रिस्टल क्लियर। प्रश्न का लेखक इसके स्पष्ट और विशिष्ट है।
मार्लहेक्स

122

स्विफ्ट समाधान

यह सबसे अच्छा तरीका है जो मैंने पाया है। आप इसे अपने ऐपडेलगेट की didFinishLaunchingWithOptions विधि में पेस्ट कर सकते हैं :

स्विफ्ट 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
}

स्विफ्ट 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
}

स्रोत: iOS 8.1 में नीचे दी गई छवि के बारे में नेविगेशन बार को पारदर्शी बनाएं


4
आपका स्विफ्ट 3 समाधान सिर्फ मेरी पट्टी को सफेद बनाता है।
जोस रामिरेज़

@JozemiteApps एक बिल्कुल नया Xcode प्रोजेक्ट बनाने की कोशिश करते हैं और कोड को पेस्ट करते हैं। केवल यह पुष्टि करने के लिए कि यह मेरा कोड ऊपर है या आपके प्रोजेक्ट के बारे में कुछ ऐसा है जिसके कारण यह हो रहा है।
दान ब्यूलियू

2
मुझे एक सादा सफ़ेद नवाब भी मिला और कोई पारदर्शी नौबत नहीं
किंगालियोन

यह बहुत अच्छा काम करता है, धन्यवाद! क्या आप जानते हैं कि आप इसे कैसे लागू कर सकते हैं कि वांछित ViewControllers पर केवल नेविगेशन बार पारदर्शी हैं?
रूफसुव

@JoseRamirez यह संभवतः आपके द्वारा देखे जाने वाले दृश्य नियंत्रक की पृष्ठभूमि है। पर्यवेक्षक के साथ संरेखित करने के लिए आपको पहले दृश्य के शीर्ष अवरोध को बदलने की आवश्यकता है न कि सुरक्षित क्षेत्र या मार्जिन को।
turingtested

27

स्विफ्ट 5 केवल वर्तमान दृश्य नियंत्रक पर लागू होता है

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
}

13

स्विफ्ट 3: पारदर्शी नेविगेशन बार के लिए विस्तार

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

12

स्विफ्ट 4.2 समाधान: पारदर्शी पृष्ठभूमि के लिए:

  1. सामान्य दृष्टिकोण के लिए:

    override func viewDidLoad() {
        super.viewDidLoad()
    
        self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
        self.navigationController?.navigationBar.shadowImage = UIImage()
        self.navigationController?.navigationBar.isTranslucent = true
    
    }
  2. विशिष्ट वस्तु के लिए:

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

आशा है कि यह उपयोगी है।


आप किस वस्तु का उल्लेख करते हैं navBar?
सेर्गेई गमयुनोव

@SergeyGamayunov navBar, UINavigationBar की वस्तु को संदर्भित करता है।
Maymañg mürmån

उसका यही मतलब है ... चलो navBar = self.navigationController; .navigationBar
Marlhex

8

मैं इसे इस तरह से पूरा करने में सक्षम था:

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

जहाँ मैंने एक UIColorश्रेणी में निम्नलिखित उपयोगिता विधि बनाई :

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

यह शीर्ष उत्तर होना चाहिए!
1828 में मिहेल सालारी


5

अपने नेवीगेशन की पृष्ठभूमि प्रॉपर्टी सेट करें, जैसे

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

(आपको यह बदलना पड़ सकता है कि यदि आपके पास एक नेविगेशन नियंत्रक नहीं है, लेकिन आपको यह पता लगाना चाहिए कि क्या करना है।)

यह भी सुनिश्चित करें कि नीचे का दृश्य वास्तव में बार के नीचे फैला हो।


यह मुझे निम्नलिखित देता है: i.stack.imgur.com/GT3WV.png मैं पहली पोस्ट की तरह थोड़ा और लाल कैसे बना सकता हूं (छवि) मैंने पोस्ट किया
पीटर पिक

आप अल्फा मान के साथ खेल सकते हैं और इसे 0.5 से 0.0 और 1.0 के बीच किसी भी चीज़ में बदल सकते हैं। और जैसा कि मैंने कहा, सुनिश्चित करें कि नीचे दिया गया दृश्य नेविगेशन बार के अंतर्गत आता है, अन्यथा आपको बार के माध्यम से कोई सामग्री चमक नहीं दिखाई देगी। यदि आप इंटरफ़ेस बिल्डर का उपयोग कर रहे हैं, तो आप स्क्रीन के ऊपरी किनारे के साथ उस दृश्य के ऊपरी किनारे को खींच और संरेखित कर सकते हैं।
एटमिक्स

2

यह कोशिश करो, यह मेरे लिए काम करता है अगर आपको ios7 का समर्थन करने की आवश्यकता है, तो यह 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

OBJC समाधान की तलाश करने वालों के लिए, ऐप डेलिगेट में जोड़ा जाना चाहिए।

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

1

यदि आप एक ही दृश्य पर रहते हुए इस प्रोग्राम को स्विफ्ट 4 में करने में सक्षम होना चाहते हैं,

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
    }

एक महत्वपूर्ण बात यह याद रखें कि इस बटन को अपने स्टोरीबोर्ड में क्लिक करना है। मेरे पास लंबे समय तक जंपिंग डिस्प्ले के साथ एक मुद्दा था। सुनिश्चित करें कि यह सेट करें:यहाँ छवि विवरण दर्ज करें

फिर जब आप नेविगेशन बार की पारभासी को बदलते हैं, तो यह विचारों को कूदने का कारण नहीं बनेगा, क्योंकि नेविगेशन बार की दृश्यता की परवाह किए बिना, दृश्य शीर्ष पर सभी तरह का विस्तार करते हैं।


1

इसे अपने दिए गए लोड में जोड़ें

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

उपयोगिता विधि जिसे आप नेवीगेशनकोन्ट्रोलर और कलर पास करके कहते हैं जिसे आप नेविगेशन बार पर सेट करना पसंद करते हैं। के लिए पारदर्शी आप उपयोग कर सकते हैं clearColorके UIColorवर्ग।

उद्देश्य सी के लिए -

+ (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];
}

स्विफ्ट 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

मैं इस पर काम कर रहा था, और मुझे विभिन्न उपयोगकर्ताओं द्वारा यहां दी गई प्रतिक्रियाओं का उपयोग करने में एक समस्या का सामना करना पड़ रहा था। समस्या आईओएस 13+ पर मेरी नेविगेशनबेर पारदर्शी छवि के पीछे एक सफेद बॉक्स था

यहाँ छवि विवरण दर्ज करें

मेरा समाधान यही है

if #available(iOS 13, *) {
    navBar?.standardAppearance.backgroundColor = UIColor.clear
    navBar?.standardAppearance.backgroundEffect = nil
    navBar?.standardAppearance.shadowImage = UIImage()
    navBar?.standardAppearance.shadowColor = .clear
    navBar?.standardAppearance.backgroundImage = UIImage()
}

आशा है कि यह किसी को भी इसी समस्या के साथ मदद करता है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.