স্বচ্ছ নেভিগেশন বার আইওএস


121

আমি একটি অ্যাপ তৈরি করছি এবং আমি ইন্টারনেটে ব্রাউজ করেছি এবং আমি ভাবছি যে তারা কীভাবে এই স্বচ্ছ নেভিগেশন বারটি তৈরি করে:

এখানে চিত্র বর্ণনা লিখুন

আমি আমার প্রশংসাপত্রের মতো নিম্নলিখিতগুলি যুক্ত করেছি:

UINavigationBar.appearance().translucent = true

তবে এটি কেবল এটি নীচের মত দেখাচ্ছে:

এখানে চিত্র বর্ণনা লিখুন

আমি কীভাবে নেভিগেশনবারকে প্রথম চিত্রের মতো স্বচ্ছ করতে পারি


আমি জানি না এমন কোড সহ, তবে আপনি যদি সিএসএসে ভাল হন তবে আপনি একটি ফ্রেমওয়ার্ক (পিক্সেট: ফ্রিস্টাইল.অর্গ.অর্গ ) ব্যবহার করতে পারেন , এবং আপনার নাবারটিতে কেবল একটি 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
আমি যখন সেটব্যাকগ্রাউন্ড ইমেজ সেট করি তখন এটি বারটিন্টকালারটি সরিয়ে দেয়?
পিটার পিক

আপনি নেভিগেশন বারের চিত্রটি পেতে পারেন .. আপনার প্রয়োজন অনুসারে..আর উপরের মতো নেভিগেশন বারে প্রয়োগ করুন .. (আপনি যে চিত্র নেভিগেশন বারে প্রয়োগ করতে চান)
বিধান্যানন্দ

1
নেভিগেশন
কন্ট্রোলারের

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
}

সুইফট ২.০

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
}

উত্স: আইওএস 8.1 এ নীচের চিত্র সম্পর্কিত নেভিগেশন বারটিকে স্বচ্ছ করুন


3
আপনার সুইফ্ট 3 সমাধানটি আমার বারটিকে সাদামাটা করে তোলে।
জোসে রামিরেজ

@ জোজেমিট অ্যাপসগুলি একেবারে নতুন এক্সকোড প্রকল্প তৈরি করার চেষ্টা করছে এবং কোডটি আটকান only এটি কেবল আমার কোডের উপরে বা আপনার প্রকল্পের কারণে কিছু ঘটছে তা নিশ্চিত হতে কেবল 3 মিনিট সময় লাগবে।
ড্যান

1
আমি একটি সরল সাদা নাভিবার এবং স্বচ্ছ ন্যাভিবারটিও পেয়েছি
কিংয়ালিয়ন

এটি দুর্দান্ত কাজ করে, আপনাকে ধন্যবাদ! আপনি কি জানেন যে আপনি কীভাবে এটি বাস্তবায়ন করতে পারেন যে পছন্দসই ভিউকন্ট্রোলারগুলিতে কেবলমাত্র নেভিগেশন বারগুলি স্বচ্ছ?
RufusV

@ জোসেরামিরেজ সম্ভবত আপনি যে ভিউকন্ট্রোলার দেখছেন তার পটভূমি। নিরাপদ অঞ্চল বা মার্জিনের পরিবর্তে সুপারভিউয়ের সাথে সারিবদ্ধ হওয়ার জন্য আপনাকে প্রথম দর্শনের শীর্ষ সীমাবদ্ধতা পরিবর্তন করতে হবে।
টুরিটিংড

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

সুইফট ৪.২ সমাধান: স্বচ্ছ পটভূমির জন্য:

  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?
সের্গেই গামায়ুনভ

@ সেরজেগামায়ুনভ navBarএখানে ইউআইএনএভিগেশনবারের বিষয়টিকে বোঝায়।
ñmañg årmån

এটাই তার অর্থ ... চলুন নাভবার = সেল্ফ-নেভিগেশন কন্ট্রোলার? .্যাভিগেশনবার
মারলেহেক্স

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
}

এটি শীর্ষ উত্তর হতে হবে!
মিহাইল সালারি


5

আপনার নেভিগেশন বারের ব্যাকগ্রাউন্ড সম্পত্তি সেট করুন eg

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

(আপনার কাছে নেভিগেশন কন্ট্রোলার না থাকলে আপনাকে এটি কিছুটা পরিবর্তন করতে হতে পারে, তবে এটি আপনাকে কী করবে সে সম্পর্কে ধারণা দেওয়া উচিত))

এছাড়াও নিশ্চিত করুন যে নীচের দর্শনটি আসলে বারের নীচে প্রসারিত হয়েছে।


এটি আমাকে নিম্নলিখিতটি দেয়: i.stack.imgur.com/GT3WV.png আমি পোস্ট করা প্রথম লিঙ্কের (চিত্র) এর মতো আমি কীভাবে আরও কিছুটা লাল করতে পারি
পিটার পিক

আপনি আলফা মান দিয়ে খেলতে পারেন এবং এটি ০.০ থেকে ০.০ এবং 1.0 এর মধ্যে যে কোনও কিছুতে পরিবর্তন করতে পারেন। এবং যেমনটি আমি বলেছি, নীচের দর্শনটি নেভিগেশন বারের নীচে চলেছে তা নিশ্চিত করুন, অন্যথায় আপনি বারের মাধ্যমে কোনও সামগ্রী চকচকে দেখতে পাবেন না। আপনি যদি ইন্টারফেস বিল্ডার ব্যবহার করে থাকেন তবে আপনি স্ক্রিনের উপরের প্রান্তটি দিয়ে সেই দৃশ্যটির উপরের প্রান্তটি টানতে এবং প্রান্তিক করতে পারেন।
এটমিক্স

2

এটি ব্যবহার করে দেখুন, এটি আমার পক্ষে কাজ করে যদি আপনারও আইওএস 7 সমর্থন করতে হয় তবে এটি ইউটিওলবারের স্বচ্ছতার উপর ভিত্তি করে:

[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

ওবিজেসি সমাধান সন্ধানকারীদের জন্য অ্যাপ ডেলিগেটডডফিনিশ লঞ্চিং উইথঅপশন পদ্ধতিতে যুক্ত করার জন্য:

[[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()
}

আশা করি এটি একই সমস্যাযুক্ত যে কাউকে সহায়তা করে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.