ios UINavigation বার transparent করুন




iphone objective-c (14)

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

এই আপনি কি প্রয়োজন:

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

কিভাবে আপনি একটি UINavigationbar স্বচ্ছ করতে পারি? যদিও আমি তার বার আইটেম দৃশ্যমান থাকা চাই।


কেউ যদি iOS 7+ এ কীভাবে এটি অর্জন করতে পারে তা অবাক করে তবে এখানে একটি সমাধান রয়েছে (iOS 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

আলোচনা

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

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


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

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

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

navigationController?.navigationBar.backgroundColor = .clear

... এবং ভয়েলা! যে কৌতুক করতে লাগলো।


কোডের নিচের অংশটি চেষ্টা করুন:

self.navigationController.navigationBar.translucent = YES;

RRViewControllerExtension পরীক্ষা করুন, যা UINavigation বার উপস্থিতি ব্যবস্থাপনা উপর নিবেদিত হয়।

আপনার প্রকল্পের RRViewControllerExtension সঙ্গে, আপনি শুধু override প্রয়োজন

-(BOOL)prefersNavigationBarTransparent;

আপনি দেখুন কন্ট্রোলার।


এই সুইফট 2.0 জন্য কাজ করে।

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

এই কাজ মনে হচ্ছে:

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

navigationController.navigationBar.backgroundColor = [UIColor clearColor];

আমার জন্য যে অন্য একটি উপায় কাজ করেছে তা হল UINavigationbar সাবক্লাস এবং DrawRect Method খালি ছেড়ে দিন !!

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

IOS5 এ আপনি ন্যাভিগেশন বার স্বচ্ছ করতে এটি করতে পারেন:

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

সি # / Xamarin সমাধান

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

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


সুইফট 3.0 এর জন্য:

override func viewDidLoad() {
    super.viewDidLoad()

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

আইওএস 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];

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

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

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

  3. "Tintcolor" লাইন (দ্বিতীয় কোডেড লাইন) আমার ব্যাক বোতামটি একটি হালকা ধূসর সেট করে

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

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




transparency