ios - UINavigation বার transparent করুন




iphone objective-c (12)

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


সি # / Xamarin সমাধান

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

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

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

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


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

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

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

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

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

navigationController.navigationBar.backgroundColor = [UIColor clearColor];

কেউ যদি 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 এর চেয়ে কম একটি সিস্টেম অস্বচ্ছতা প্রয়োগ করবে।


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

self.navigationController.navigationBar.translucent = YES;

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

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

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

navigationController?.navigationBar.backgroundColor = .clear

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


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

override func viewDidLoad() {
    super.viewDidLoad()

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

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

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

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




transparency