উত্তর:
যদি কেউ 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 এর চেয়ে কম সিস্টেমের অস্বচ্ছতা প্রয়োগ করবে।
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default) self.navigationController?.navigationBar.shadowImage = UIImage() self.navigationController?.navigationBar.translucent = true
আইওএস 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];
[[UINavigationBar appearance] setShadowImage: [[UIImage alloc] init]];
আইওএস 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];
যে কেউ সুইফট ২.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
এটি কাজ করে বলে মনে হচ্ছে:
@implementation UINavigationBar (custom)
- (void)drawRect:(CGRect)rect {}
@end
navigationController.navigationBar.backgroundColor = [UIColor clearColor];
-drawRect:
একটি সাবক্লাসে যথাযথভাবে কোনও বিভাগে নয় ওভাররাইড করতে হবে এবং তারপরে এই উপক্লাসটি আপনার নেভিগেশন বার হিসাবে ব্যবহার করুন।
উপরের সবাই যা বলেছে তা করার পরে, অর্থাত:
navigationController?.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: .default)
navigationController?.navigationBar.shadowImage = UIImage()
navigationController!.navigationBar.isTranslucent = true
... আমার নেভিগেশন বারটি এখনও সাদা ছিল । সুতরাং আমি এই লাইনটি যুক্ত করেছি:
navigationController?.navigationBar.backgroundColor = .clear
... এবং ভয়েলা! যে কৌশলটি দেখে মনে হচ্ছে।
আপনি যদি সর্বশেষতম বিটা আইওএস 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
}
}
}
আমি জানি এই বিষয়টি পুরানো, তবে লোকেরা যদি জানতে চায় যে এটি কীভাবে ড্রয়রেক্ট পদ্ধতিতে লোড না করে এটি সম্পন্ন হয়।
এটি আপনার প্রয়োজন:
self.navigationController.navigationBar.translucent = YES;
self.navigationController.navigationBar.opaque = YES;
self.navigationController.navigationBar.tintColor = [UIColor clearColor];
self.navigationController.navigationBar.backgroundColor = [UIColor clearColor];
নীচের কোডটি নীচের সীমানা থেকে মুক্তি পেতে এবং পাঠ্যের রঙ নির্ধারণ করতে, এই থ্রেডটির জন্য বেছে নেওয়া শীর্ষের উত্তরের উপরে প্রসারিত হয়েছে:
এই কোডটির শেষ দুটি কোডেড লাইন স্বচ্ছতা নির্ধারণ করে। আমি এই থ্রেড থেকে কোড ধার নিয়েছি এবং এটি পুরোপুরি কাজ করেছে!
"ক্লিপস টোবাউন্ডস" বৈশিষ্ট্যটি কোডটি আমি পেয়েছি যা নীচে বার্ডার লাইনটি বা ছাড়াই স্বচ্ছতার সেট ছাড়াই মুক্তি পেয়েছে (সুতরাং আপনি যদি এর পরিবর্তে কোনও শক্ত সাদা / কালো / ইত্যাদি পটভূমি নিয়ে যাওয়ার সিদ্ধান্ত নেন তবে এখনও কোনও সীমানা লাইন থাকবে না)।
"টিন্টকালার" লাইন (২ য় কোডেড লাইন) আমার পিছনের বোতামটি হালকা ধূসরতে সেট করেছে
আমি ব্যাকআপ হিসাবে বারটিন্টকলার রেখেছি। আমি জানি না কেন স্বচ্ছতা কাজ করবে না, তবে যদি তা না হয় তবে আমি আমার বিজি সাদা চাই যেমন এটি ব্যবহার করতাম
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()
NavigationController.NavigationBar.SetBackgroundImage(new UIImage(), UIBarMetrics.Default);
NavigationController.NavigationBar.ShadowImage = new UIImage();
NavigationController.NavigationBar.Translucent = true;
আমার পক্ষে কাজ করার অন্য একটি উপায় হ'ল সাবক্লাস ইউআইএনএভিগেশন বার এবং ড্রআরেট পদ্ধতিটি খালি ছেড়ে দিন !!
@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
}}
সুইফটে 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
আপনার অর্থ কি পুরোপুরি স্বচ্ছ, বা ফটো অ্যাপ্লিকেশনটিতে দেখা ট্রান্সলুসেন্ট-ব্ল্যাক স্টাইল ব্যবহার করা উচিত? পরে আপনি এর barStyle
সম্পত্তি সেট করে তা অর্জন করতে পারেন UIBarStyleBlackTranslucent
। প্রাক্তন ... আমি সম্পর্কে নিশ্চিত নই। আপনি যদি এটিতে থাকা আইটেমগুলি এখনও দৃশ্যমান হতে চান তবে আপনাকে বারের ভিউ হায়ারার্কিতে কিছু খনন করতে হবে এবং এর পটভূমি থাকা ভিউটি সরিয়ে ফেলতে হবে।
আরআরভিউকন্ট্রোলার এক্সটেনশন পরীক্ষা করুন , যা ইউআইএনএভিগেশন বার উপস্থিতি পরিচালনার জন্য উত্সর্গীকৃত।
আপনার প্রকল্পে আরআরভিউকন্ট্রোলার এক্সটেনশন সহ, আপনাকে কেবল ওভাররাইড করা দরকার
-(BOOL)prefersNavigationBarTransparent;
আপনি ভিউকন্ট্রোলার মধ্যে।
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)
}
}
}
}
[self.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault]; self.navigationController.navigationBar.shadowImage = nil; self.navigationController.navigationBar.translucent = NO;