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


235

আপনি কীভাবে একটি ইউআইএনএভিগেশন বারকে স্বচ্ছ করবেন ? যদিও আমি চাইছি এর বার আইটেমগুলি দৃশ্যমান থাকে।

উত্তর:


635

যদি কেউ iOS 7+ এ কীভাবে অর্জন করবেন তা ভাবছেন, তবে এখানে একটি সমাধান রয়েছে (আইওএস 6 সুসংগতও)

অবজেক্টিভ-সি তে

[self.navigationBar setBackgroundImage:[UIImage new]
                         forBarMetrics:UIBarMetricsDefault];
self.navigationBar.shadowImage = [UIImage new];
self.navigationBar.translucent = YES;

দ্রুত 3 (আইওএস 10) এ

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

দ্রুত 2

self.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: .Default)
self.navigationBar.shadowImage = UIImage()
self.navigationBar.translucent = true

আলোচনা

ডকুমেন্টেশনে আলোচিত আচরণের কারণে নেভিগেশন বারে সেট translucentকরা YESকৌতুকটি করে UINavigationBar। আমি এখানে প্রাসঙ্গিক খণ্ডটি রিপোর্ট করব:

যদি আপনি এই সম্পত্তিটি YESএকটি অস্বচ্ছ কাস্টম ব্যাকগ্রাউন্ড চিত্র সহ একটি নেভিগেশন বারে সেট করেন তবে নেভিগেশন বারটি চিত্রের সাথে 1.0 এর চেয়ে কম সিস্টেমের অস্বচ্ছতা প্রয়োগ করবে।


29
আমার নিজস্ব মন্তব্যের উত্তর এখানে; প্রভাবটিকে পূর্বাবস্থায় ফিরিয়ে আনার জন্য:[self.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault]; self.navigationController.navigationBar.shadowImage = nil; self.navigationController.navigationBar.translucent = NO;
জোহান বুর্গেস

স্বচ্ছ নববারের জন্য আমার কেবল একটি ভিসি দরকার। সেই ভিসি থেকে বেরিয়ে আসার পরে কীভাবে আমি মূল স্টাইলে ফিরে যেতে পারি?
গিলহর্ম

2
একটি self.navigationController?.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default) self.navigationController?.navigationBar.shadowImage = UIImage() self.navigationController?.navigationBar.translucent = true
ভিউকন্ট্রোলারের

পাশাপাশি উপস্থিতি (আইওএস 7/8) ব্যবহার করে কাজ করে, দেখুন: gist.github.com/mpycio/ddbdea1adb6b86cf02f6
মহাকাল

1
আমার জন্য প্রভাবটি পূর্বাভাস কেবল আংশিকভাবে কাজ করে। কারণ আমি এটি করার পরে, আমার টেবিলভিউগুলির সকলের শিরোনামগুলি খুব বড়। অ্যাপ-ওয়াইড, যা অদ্ভুত। (আমি কেবল স্ট্যাকের উপরে চাপ দেওয়া একটি নিয়ন্ত্রণকারীর জন্য এই প্রভাবটিই চাই))
হেনিং

29

আইওএস 5-তে আপনি নেভিগেশন বারকে স্বচ্ছ করতে এটি করতে পারেন:

nav.navigationBar.translucent = YES; // Setting this slides the view up, underneath the nav bar (otherwise it'll appear black)
const float colorMask[6] = {222, 255, 222, 255, 222, 255};
UIImage *img = [[UIImage alloc] init];
UIImage *maskedImage = [UIImage imageWithCGImage: CGImageCreateWithMaskingColors(img.CGImage, colorMask)];

[nav.navigationBar setBackgroundImage:maskedImage forBarMetrics:UIBarMetricsDefault]; 
[img release];

6
আইওএস 6 এ আপনি নেভিগেশন বারের ছায়াও সরাতে চাইবেন, অন্যথায় এটি অদ্ভুত লাগবে। [[UINavigationBar appearance] setShadowImage: [[UIImage alloc] init]];
রবার্ট

23

আইওএস 7 থেকে:

self.navigationController.navigationBar.translucent = YES;
self.navigationController.navigationBar.shadowImage = [UIImage new];
self.navigationController.view.backgroundColor = [UIColor clearColor];
[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
self.navigationController.navigationBar.backgroundColor = [UIColor clearColor];

14

যে কেউ সুইফট ২.x এ এটি করতে চায় তার জন্য:

self.navigationController?.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: .Default)
self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.translucent = true

বা সুইফট 3.x:

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

2
নেভিগেশনকন্ট্রোলার হ'ল একটি alচ্ছিক সম্পত্তি তাই আপনাকে এটি আন-মোড়ানো দরকার। কেবল স্ব.নিভিশনকন্ট্রোলার যুক্ত করুন? ন্যাভিগেশন বার এবং আপনি যেতে ভাল
ড্যানিয়েল গালাসকো

10

এটি কাজ করে বলে মনে হচ্ছে:

@implementation UINavigationBar (custom)
- (void)drawRect:(CGRect)rect {}
@end

navigationController.navigationBar.backgroundColor = [UIColor clearColor];

6
দেখে মনে হচ্ছে আইওএস 5 এ আপনাকে অবশ্যই -drawRect:একটি সাবক্লাসে যথাযথভাবে কোনও বিভাগে নয় ওভাররাইড করতে হবে এবং তারপরে এই উপক্লাসটি আপনার নেভিগেশন বার হিসাবে ব্যবহার করুন।
ইয়াং মায়ার

9

উপরের সবাই যা বলেছে তা করার পরে, অর্থাত:

navigationController?.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: .default)
navigationController?.navigationBar.shadowImage = UIImage()
navigationController!.navigationBar.isTranslucent = true

... আমার নেভিগেশন বারটি এখনও সাদা ছিল । সুতরাং আমি এই লাইনটি যুক্ত করেছি:

navigationController?.navigationBar.backgroundColor = .clear

... এবং ভয়েলা! যে কৌশলটি দেখে মনে হচ্ছে।


7

আপনি যদি সর্বশেষতম বিটা আইওএস 13.4 এবং এক্সকোড 11.4 দিয়ে তৈরি করেন তবে গৃহীত উত্তরটি আর কাজ করবে না। আমি অন্য একটি উপায় খুঁজে পেয়েছি, সম্ভবত এটি বিটা সফ্টওয়্যারটিতে কেবল একটি বাগ আছে, তবে আমি এটি কেবল সেখানে লিখছি

(দ্রুত 5)

import UIKit

class TransparentNavBar :UINavigationBar {
    override func awakeFromNib() {
        super.awakeFromNib()
        self.setBackgroundImage(UIImage(), for: .default)
        self.shadowImage = UIImage()
        self.isTranslucent = true
        self.backgroundColor = .clear
        if #available(iOS 13.0, *) {
            self.standardAppearance.backgroundColor = .clear
            self.standardAppearance.backgroundEffect = .none
            self.standardAppearance.shadowColor = .clear
        }
    }
}

অসাধারণ! শুধু ঠিক করার জন্য অনুসন্ধান করা হয়েছিল! দুর্দান্ত কাজ! ধন্যবাদ!
জর্জি

5

আমি জানি এই বিষয়টি পুরানো, তবে লোকেরা যদি জানতে চায় যে এটি কীভাবে ড্রয়রেক্ট পদ্ধতিতে লোড না করে এটি সম্পন্ন হয়।

এটি আপনার প্রয়োজন:

self.navigationController.navigationBar.translucent = YES;
self.navigationController.navigationBar.opaque = YES;
self.navigationController.navigationBar.tintColor = [UIColor clearColor];
self.navigationController.navigationBar.backgroundColor = [UIColor clearColor];

1
দুঃখিত, এটি সঠিক নয়। আপনাকে এখনও ড্রআরেট পদ্ধতিটি ওভাররাইড করতে হবে
স্যান্ডার

কেন এই ভুল? মনে হচ্ছে এটি আইওএস 6 সিমটিতে কাজ করছে। এটি আইওএস 5 এ কাজ করছে না? নেভিগেশনবার.ব্যাকগ্রাউন্ড কালারটি নথিভুক্ত বলে মনে হচ্ছে।
ক্রিসটি

5

নীচের কোডটি নীচের সীমানা থেকে মুক্তি পেতে এবং পাঠ্যের রঙ নির্ধারণ করতে, এই থ্রেডটির জন্য বেছে নেওয়া শীর্ষের উত্তরের উপরে প্রসারিত হয়েছে:

  1. এই কোডটির শেষ দুটি কোডেড লাইন স্বচ্ছতা নির্ধারণ করে। আমি এই থ্রেড থেকে কোড ধার নিয়েছি এবং এটি পুরোপুরি কাজ করেছে!

  2. "ক্লিপস টোবাউন্ডস" বৈশিষ্ট্যটি কোডটি আমি পেয়েছি যা নীচে বার্ডার লাইনটি বা ছাড়াই স্বচ্ছতার সেট ছাড়াই মুক্তি পেয়েছে (সুতরাং আপনি যদি এর পরিবর্তে কোনও শক্ত সাদা / কালো / ইত্যাদি পটভূমি নিয়ে যাওয়ার সিদ্ধান্ত নেন তবে এখনও কোনও সীমানা লাইন থাকবে না)।

  3. "টিন্টকালার" লাইন (২ য় কোডেড লাইন) আমার পিছনের বোতামটি হালকা ধূসরতে সেট করেছে

  4. আমি ব্যাকআপ হিসাবে বারটিন্টকলার রেখেছি। আমি জানি না কেন স্বচ্ছতা কাজ করবে না, তবে যদি তা না হয় তবে আমি আমার বিজি সাদা চাই যেমন এটি ব্যবহার করতাম

    let navigationBarAppearace = UINavigationBar.appearance()
    navigationBarAppearace.tintColor = UIColor.lightGray
    navigationBarAppearace.barTintColor = UIColor.white
    navigationBarAppearace.clipsToBounds = true
    navigationBarAppearace.isTranslucent = true
    navigationBarAppearace.setBackgroundImage(UIImage(), for: .default)
    navigationBarAppearace.shadowImage = UIImage()

3

সুইফট ৩.০ এর জন্য:

override func viewDidLoad() {
    super.viewDidLoad()

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

3

সি # / জ্যামারিন সলিউশন

NavigationController.NavigationBar.SetBackgroundImage(new UIImage(), UIBarMetrics.Default);
NavigationController.NavigationBar.ShadowImage = new UIImage();
NavigationController.NavigationBar.Translucent = true;

2

নিম্নলিখিত কোডের টুকরোটি ব্যবহার করে দেখুন:

self.navigationController.navigationBar.translucent = YES;

1

আমার পক্ষে কাজ করার অন্য একটি উপায় হ'ল সাবক্লাস ইউআইএনএভিগেশন বার এবং ড্রআরেট পদ্ধতিটি খালি ছেড়ে দিন !!

@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
}}

1

সুইফটে 4.2

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

(ভিউউইলঅ্যাপারে), এবং তারপরে ভিউইলডিস্পিয়ারে এটিকে পূর্বাবস্থায় ফেলার জন্য রেখে দিন

self.navigationController?.navigationBar.shadowImage = nil
self.navigationController?.navigationBar.isTranslucent = false

0

আপনার অর্থ কি পুরোপুরি স্বচ্ছ, বা ফটো অ্যাপ্লিকেশনটিতে দেখা ট্রান্সলুসেন্ট-ব্ল্যাক স্টাইল ব্যবহার করা উচিত? পরে আপনি এর barStyleসম্পত্তি সেট করে তা অর্জন করতে পারেন UIBarStyleBlackTranslucent। প্রাক্তন ... আমি সম্পর্কে নিশ্চিত নই। আপনি যদি এটিতে থাকা আইটেমগুলি এখনও দৃশ্যমান হতে চান তবে আপনাকে বারের ভিউ হায়ারার্কিতে কিছু খনন করতে হবে এবং এর পটভূমি থাকা ভিউটি সরিয়ে ফেলতে হবে।


2
মানে প্রাক্তন আমি একটি বিভাগ তৈরি করার চেষ্টা করেছি এবং ইউআইএনএভিগেশনবারের অঙ্কনযোগ্য পদ্ধতিটি (সিজি কনটেক্সটক্রিয়ারট অনুরোধ করছি) চেষ্টা করেছি, তবে এটি একে একে পুরোপুরি কালো করে দিয়েছে। আইটেমগুলি এখনও দৃশ্যমান ছিল।
কোয়ানো

0

এটি সুইফট ২.০ এর জন্য কাজ করে।

navigationController!.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default)
navigationController!.navigationBar.shadowImage = UIImage()
navigationController!.navigationBar.translucent = true

0

আরআরভিউকন্ট্রোলার এক্সটেনশন পরীক্ষা করুন , যা ইউআইএনএভিগেশন বার উপস্থিতি পরিচালনার জন্য উত্সর্গীকৃত।

আপনার প্রকল্পে আরআরভিউকন্ট্রোলার এক্সটেনশন সহ, আপনাকে কেবল ওভাররাইড করা দরকার

-(BOOL)prefersNavigationBarTransparent;

আপনি ভিউকন্ট্রোলার মধ্যে।

নেভিগেশন বার স্বচ্ছ


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