আইওএস 7-এ কীভাবে স্বচ্ছ ইউআইটিউলবার বা ইউআইএনএভিগেশন বারটি আঁকবেন


88

আমি একটি সম্পূর্ণরূপে স্বচ্ছ চাই UIToolbarএবং / অথবা UINavigationBar। আমি প্রাক-এবং আইওএস-পরবর্তী 5 এর জন্য প্রস্তাবিত বিভিন্ন পদক্ষেপ চেষ্টা করেছি তবে কোনওটিই আর কাজ করবে বলে মনে হয় না।

এটি আইওএস 7 এ কীভাবে সম্পন্ন হতে পারে?


উত্তরোত্তর জন্য - আমি ভুল করে সেল্ফ.এজেডসফোরএক্সটেন্ডডলয়আউট = ইউআইআরেক্টএডজোন ব্যবহার করছিলাম যা সরঞ্জামদণ্ডের নীচে দর্শন বাড়িয়ে দেয়।
বেন প্যাকার্ড

উত্তর:


303

সুইফট 3 (আইওএস 10)

স্বচ্ছ UIToolbar

self.toolbar.setBackgroundImage(UIImage(),
                                forToolbarPosition: .any,
                                barMetrics: .default)
self.toolbar.setShadowImage(UIImage(), forToolbarPosition: .any)

স্বচ্ছ UINavigationBar

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

সুইফট <3

স্বচ্ছ UIToolbar

self.toolbar.setBackgroundImage(UIImage(),
                                forToolbarPosition: UIBarPosition.Any,
                                barMetrics: UIBarMetrics.Default)
self.toolbar.setShadowImage(UIImage(),
                            forToolbarPosition: UIBarPosition.Any)

স্বচ্ছ UINavigationBar

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

উদ্দেশ্য গ

স্বচ্ছ UIToolbar

[self.toolbar setBackgroundImage:[UIImage new]
              forToolbarPosition:UIBarPositionAny
                      barMetrics:UIBarMetricsDefault];
[self.toolbar setShadowImage:[UIImage new]
          forToolbarPosition:UIBarPositionAny];

স্বচ্ছ UINavigationBar

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

আলোচনা

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

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


সর্বশেষ ফলাফল

সর্বশেষ ফলাফল


4
আপনি কি নিশ্চিত করেছেন যে সরঞ্জামদ্বার সংস্করণটি iOS7 এ কাজ করে? আমি একটি অন্ধকার সরঞ্জামদণ্ড এবং উপস্থাপনায় একটি অদ্ভুত ঝলকানি পেয়েছি।
বেন প্যাকার্ড

4
স্ক্রিনশটটি iOS 7সিমুলেটর থেকে এসেছে
গ্যাব্রিয়েল পেট্রোনেলা

এছাড়াও আমি আইওএস 7 সহ কেবলমাত্র আমার আইফোন 5 এ একটি পরীক্ষা অ্যাপ চালাচ্ছি এবং এটি প্রত্যাশার মতো কাজ করে।
গ্যাব্রিয়েল পেট্রোনেলা

4
ভালভাবে সম্পন্ন হয়েছে, তাই খুব ভুল / খারাপ উপায় এটি থেকে এখানে করার জন্য
pfrank

4
এজরাডএক্সটেন্ডডলয়আউট = ইউআইআরেক্টএডজোন কোনটি ব্যবহার করা হলে আপনি সম্ভবত কাস্টম ট্রানজিশনগুলি প্রয়োগ করতে চান। কারণ অন্যথায়, ভিউগুলিকে ধাক্কা দেওয়ার সময়, ডিফল্ট রূপান্তরটি অ্যানিমেশন চলাকালীন স্বচ্ছ বারের নীচে একটি অন্ধকার ফ্লিকার তৈরি করে। এফওয়াইআই, এখানে একটি বেসিক স্লাইডিং ট্রানজিশনের জন্য দ্রুত সংস্থান রয়েছে: gist.github.com/ArtFeel/7690431
anna

8

আপনি যদি পুরো অ্যাপ্লিকেশনটির মাধ্যমে এটি করতে চান তবে আপনার ইউআইএআইপিয়ারেন্স প্রক্সি (আইওএস 5 +) ব্যবহার করা উচিত:

UINavigationBar *navigationBarAppearance = [UINavigationBar appearance]; navigationBarAppearance.backgroundColor = [UIColor clearColor]; [navigationBarAppearance setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault]; navigationBarAppearance.shadowImage = [[UIImage alloc] init];

দস্তাবেজ: https://developer.apple.com/library/ios/docamentation/UIKit/References/UIAppearance_Protocol/References/References.html

নিবন্ধ: http://nshipster.com/uiappearance/


এটি দেখার জন্য লোকেদের জন্য কেবল একটি নোট - এই প্রয়োগ করার জন্য দ্রুত এবং নোংরা উপায়ের জন্য এই কোডটি আপনার অ্যাপডেলিগ্রেটেডফিনিশলঞ্চিং উইথঅপশনগুলিতে রাখুন।
শন এফ

আপনি এই উপস্থিতির প্রক্সিটি কেবলমাত্র নির্দিষ্ট UINavigationControllerসাবক্লাসের সাথে কাজ করতে সেট করতে পারেন — যেমন, আপনি যে আচরণটি প্রয়োগ করতে চান এটিতে।
ইভান আর


0
@implementation MyCustomNavigationBar

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        [self setup];
    }
    return self;
}

- (id)initWithCoder:(NSCoder *)aDecoder {
    self = [super initWithCoder:aDecoder];
    if (self) {
        [self setup];
    }
    return self;
}

- (void)setup {
    [self setupBackground];
}

- (void)setupBackground {
    self.backgroundColor = [UIColor clearColor];
    self.tintColor = [UIColor clearColor];

    // make navigation bar overlap the content
    self.translucent = YES; 
    self.opaque = NO;

    // remove the default background image by replacing it with a clear image
    [self setBackgroundImage:[self.class maskedImage] forBarMetrics:UIBarMetricsDefault];

    // remove defualt bottom shadow
    [self setShadowImage: [UIImage new]]; 
}

+ (UIImage *)maskedImage {
    const float colorMask[6] = {222, 255, 222, 255, 222, 255};
    UIImage *img = [UIImage imageNamed:@"nav-white-pixel-bg.jpg"];
    return [UIImage imageWithCGImage: CGImageCreateWithMaskingColors(img.CGImage, colorMask)];
}

@end

0

আমি হোঁচট খেয়েছি এমন কিছু হ'ল যদি আমি একটি সাবক্ল্যাসড তৈরি করি UINavigationBarএবং তারপরে একটি খালি -(void)drawRect:পদ্ধতি তৈরি করি, তবে আমি একটি স্বচ্ছ নেভিগেশন বার পাব। আমি এটি শুধুমাত্র আইওএস tested. এ পরীক্ষা করে দেখেছি, তবে মনে হচ্ছে এটি কার্যকর হবে!

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