আইওএস 7 এ কীভাবে সম্পূর্ণ স্বচ্ছ নেভিগেশন বার তৈরি করবেন


127

আমি চাই আমার অ্যাপ্লিকেশনটির ইউআইএনএভিগেশন বারটি সম্পূর্ণ স্বচ্ছ হোক এবং এর অধীনে সরাসরি ভিউকন্ট্রোলারের সাথে ফ্লাশ করুন। তবে, আমি যে একমাত্র কোডটি পেয়েছি তা এটিকে স্বচ্ছ নয় তবে স্বচ্ছ নয় not আমি জানি যে এটি আইওএস 7 এ করা যেতে পারে কারণ এটি নোটস অ্যাপে ব্যবহৃত হয়। আমার প্রশ্ন হ'ল তারা কোডটি কী করত?

উত্তর:


295

এই উত্তর থেকে

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

মন্তব্যে জোশের পরামর্শ অনুসারে, বারটি ডিফল্টে ফিরিয়ে আনার জন্য:

[self.navigationController.navigationBar setBackgroundImage:nil
                     forBarMetrics:UIBarMetricsDefault];

6
এছাড়াও নিশ্চিত করুন যে আপনার নেইself.edgesForExtendedLayout = UIRectEdgeNone;
দাইদাই

25
এটির বিপরীতে যাওয়ার কোনও উপায় আছে কি?
জোড়ায়ার

12
টুইটসমূহ বারটি ডিফল্টে ফেলা হবে।
জোশ

7
এই পদ্ধতিটি ব্যবহার করে নেভিগেশন বারের স্বচ্ছতা টগল করার কোনও উপায় আছে কি?
JYC

3
আমি এটিকে স্ক্রোলভিউডিডসক্রোল এ প্রয়োগ করি এবং সেখানে এক লাফ রয়েছে। কিভাবে ঠিক করবো?
onmyway133

77

সুইফট 3 এবং সুইফট 4 এর জন্য

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

সুইফট ২.২ এর জন্য

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

উদ্দেশ্য-সি জন্য

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

1
ধন্যবাদ নেভিগেশন বারটিকে সম্পূর্ণ স্বচ্ছ করতে সেট করার একটি সহজ উপায়
হংকং ঝাউ

39

একটি উদ্দেশ্য-সি বিভাগ হিসাবে স্ব অন্তর্ভুক্ত সমাধান:

UINavigationController + + TransparentNavigationController.h

@interface UINavigationController (TransparentNavigationController)
- (void)presentTransparentNavigationBar;
- (void)hideTransparentNavigationBar;
@end

UINavigationController + + TransparentNavigationController.m

#import "UINavigationController+TransparentNavigationController.h"

@implementation UINavigationController (TransparentNavigationController)

- (void)presentTransparentNavigationBar
{
  [self.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
  [self.navigationBar setTranslucent:YES];
  [self.navigationBar setShadowImage:[UIImage new]];
  [self setNavigationBarHidden:NO animated:YES];
}

- (void)hideTransparentNavigationBar
{
  [self setNavigationBarHidden:YES animated:NO];
  [self.navigationBar setBackgroundImage:[[UINavigationBar appearance] backgroundImageForBarMetrics:UIBarMetricsDefault] forBarMetrics:UIBarMetricsDefault];
  [self.navigationBar setTranslucent:[[UINavigationBar appearance] isTranslucent]];
  [self.navigationBar setShadowImage:[[UINavigationBar appearance] shadowImage]];
}

@end

এখন, আপনি নিজের মধ্যে বিভাগটি আমদানি করতে পারেন UIViewControllerএবং আপনার নেভিগেশন নিয়ন্ত্রকের পদ্ধতিগুলি কল করতে পারেন - উদাহরণস্বরূপ:

#import "UINavigationController+TransparentNavigationController.h"

- (void)viewWillAppear:(BOOL)animated
{
  [super viewWillAppear:animated];
  [self.navigationController presentTransparentNavigationBar];
}

- (void)viewWillDisappear:(BOOL)animated
{
  [super viewWillDisappear:animated];
  [self.navigationController hideTransparentNavigationBar];
}

এবং সুইফটে একটি অনুরূপ সমাধান :

import Foundation
import UIKit

extension UINavigationController {

  public func presentTransparentNavigationBar() {
    navigationBar.setBackgroundImage(UIImage(), forBarMetrics:UIBarMetrics.Default)
    navigationBar.translucent = true
    navigationBar.shadowImage = UIImage()
    setNavigationBarHidden(false, animated:true)
  }

  public func hideTransparentNavigationBar() {
    setNavigationBarHidden(true, animated:false)
    navigationBar.setBackgroundImage(UINavigationBar.appearance().backgroundImageForBarMetrics(UIBarMetrics.Default), forBarMetrics:UIBarMetrics.Default)
    navigationBar.translucent = UINavigationBar.appearance().translucent
    navigationBar.shadowImage = UINavigationBar.appearance().shadowImage
  }
}

আমি কীভাবে এটি আবার দেখাতে পারি (উদাহরণস্বরূপ অসুস্থরা যদি কোনও নেভিগেশনকন্ট্রোলারে কেবল 1 দৃষ্টিতে স্বচ্ছ করতে চান?) - আমি কি এটি আমার ডিফল্ট মানগুলিতে পুনরায় সেট করতে পারি?
derdida

hideTransparentNavigationBar()এটি আবার রিসেট করা উচিত।
জোড়ায়র

উইল অ্যাপ্লায়ার / অদৃশ্যে ভিউ-তে উপস্থিত / লুকানোর পদ্ধতিগুলিকে কল করা দুটি ভিন্ন ভিন্ন নেভিগেশন বারের মধ্যে একটি খারাপ রূপান্তর অ্যানিমেশন দেয়! আপনি পুশভিউ কনট্রোলারের
andreacipriani

viewDidHideএটি প্যারেন্ট ভিউ কন্ট্রোলারের মধ্যে কল করার চেষ্টা করুন ।
জোড়ায়ার

1
লার্জটাইটেল ব্যবহার করার সময় স্বচ্ছ নব্যবার লুকানোর সময় আইওএস ১১-তে কালো ব্যাকগ্রাউন্ড দেখানো হয়
শ্রুতিন রাঠোদ

15

অ্যালান একটি লাইন ভুলে গেছে

self.navigationController.navigationBar.backgroundColor = [UIColor clearColor];

সুতরাং আমি আছে:

[self.navigationController.navigationBar setTranslucent:YES];
self.navigationController.view.backgroundColor = [UIColor clearColor];
[self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault];
self.navigationController.navigationBar.shadowImage = [[UIImage alloc] init];
self.navigationController.navigationBar.backgroundColor = [UIColor clearColor];

5

@ জোরায়ের দুর্দান্ত উত্তরটি সুইফট 3 এ সংশোধিত হয়েছে:

import Foundation
import UIKit

extension UINavigationController {

    public func presentTransparentNavigationBar() {
        navigationBar.setBackgroundImage(UIImage(), for:.default)
        navigationBar.isTranslucent = true
        navigationBar.shadowImage = UIImage()
        setNavigationBarHidden(false, animated:true)
    }

    public func hideTransparentNavigationBar() {
        setNavigationBarHidden(true, animated:false)
        navigationBar.setBackgroundImage(UINavigationBar.appearance().backgroundImage(for: UIBarMetrics.default), for:.default)
        navigationBar.isTranslucent = UINavigationBar.appearance().isTranslucent
        navigationBar.shadowImage = UINavigationBar.appearance().shadowImage
    }
}

2

সুইফট 4.2 এবং আইওএস 12

নীচের কোডটি হ'ল এটি যা সত্যই আপনার প্রয়োজন তা সক্রিয় করে। আপনি এটি whenোকানোর সময় এটি পুরোপুরি কাজ করে viewDidLoad()

// removes line at bottom of navigation bar
navigationController?.navigationBar.shadowImage = UIImage()

// makes navigation bar completely transparent
navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
navigationController?.navigationBar.isTranslucent = true


-4

[(ইউআইভিউ *) [স্ব-নেভিগেশন কন্ট্রোল.আরভিগেশন বার.সুবিউজস অবজেক্টঅটিআইডেক্স: 0] সেটআল্ফা: 0.0f];

এই এক লাইনটি আমার জন্য পুরোপুরি কাজ করবে বলে মনে হয়েছিল

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