আইওএস স্থিতি দণ্ডটি কীভাবে আড়াল করবেন


219

আমার আইওএস ভিডিও অ্যাপ্লিকেশন স্থিতি দণ্ড কিছু ভিউ নিয়ন্ত্রণকারীদের মধ্যে লুকানো আছে। আমি নিম্নলিখিত কোড ব্যবহার করে এটি করেছি।

[[UIApplication sharedApplication] setStatusBarHidden:YES];
  • এটি আইওএস 5 এবং আইওএস 6 এর জন্য কাজ করে তবে আইওএস 7 এ নয়।

  • আমি বিশেষ ভিউ কন্ট্রোলার দিয়ে এটি দিয়ে চেষ্টা করেছি,

উদাহরণ:

-(BOOL)prefersStatusBarHidden { return YES; }

এটি ভালভাবে কাজ করে তবে আমি পিতামাতার ভিউ কন্ট্রোলারে আবার স্ট্যাটাস বারটি প্রদর্শন করতে পারি না।



1
যদি স্টিরিবোর্ডে স্ট্যাটাস বারের স্টাইলটি সেট করা থাকে, "দেখুন নিয়ামক-ভিত্তিক স্থিতি দণ্ড" পরিবর্তন করার পরে (নীচে), শৈলীটি প্লিস্টে সেট করতে হতে পারে কারণ ভিউ কন্ট্রোলার সেটিংস আর ব্যবহার করা হবে না। stackoverflow.com/questions/18924345/…
ম্যাট

1
আমি অন্য এক প্রশ্নের জবাব দিলাম। এটা চেষ্টা কর. [লুকান করার সবচেয়ে সহজ উপায় স্ট্যাটাস বার প্রোগ্রামেটিক্যালি] [1] [1]: stackoverflow.com/a/27339754/3718498
Wataru

1
আমি এর জন্য একটি কৌশল ব্যবহার করেছি - আমি এটি পোড কোকোপডস.আর / পোডস / ইউআইভিউ কনট্রোলার + ওডিএসটিসবার হিসাবে প্রকাশ করেছি , আমি আশা করি এটি কারও পক্ষে কার্যকর হবে
অ্যালেক্স নাজারস্কি

এখানে উত্তরগুলি এখন অবচয় করা হয়েছে। শুধু লঞ্চ স্ক্রিনের জন্য স্ট্যাটাস বারটি লুকানোর সময় আইওএস 9-র সঠিক উত্তর খুঁজে পেতে আমার সমস্যা হয়েছিল , তাই নীচের সাথে সংযোগ স্থাপন করুন যাতে এটি করা অন্যদের পক্ষে আশা করা সহজ যে: স্ট্যাকওভারফ্লো
বেন

উত্তর:


277

আপনার এই মানটি প্লিস্টে যুক্ত করা উচিত: " কন্ট্রোলার-ভিত্তিক স্ট্যাটাস বারের উপস্থিতি দেখুন " এবং " NO " এ সেট করুন ।

এখানে চিত্র বর্ণনা লিখুন


40
রেফারেন্সের জন্য, কাঁচা কীটি হ'লUIViewControllerBasedStatusBarAppearance
উইলিয়াম ডেনিস

1
@ রজনী0071 আমার যদি প্রয়োজন কাজের জন্য যদি স্ট্যাটাসবার্ট স্টাইল পছন্দ করতে চান তবে আমার কী করা দরকার "View controller-based status bar appearance" set it to "YES".?
বিমাওয়া


আপনি কোন সমস্যার মুখোমুখি?
রজনী

অবচিত বলে মনে হচ্ছে, আপনার অ্যাপ্লিকেশনটি ভেঙে ফেলবে
বেন


113

ভিউডিডলোডে নিম্নলিখিত লাইনটি যুক্ত করুন

  [[UIApplication sharedApplication] setStatusBarHidden:YES
                                        withAnimation:UIStatusBarAnimationFade];

এবং নতুন পদ্ধতি যুক্ত করুন

  - (BOOL)prefersStatusBarHidden {
          return YES;
  }

এছাড়াও info.plist ফাইল পরিবর্তন করুন নিয়ামক-ভিত্তিক স্থিতি দণ্ডের উপস্থিতি দেখুন "= কোন

এটা আমার জন্য কাজ


থ্যাঙ্কস এইটি আমার জন্য কাজ করছে তবে আমার প্লাস্টেও নীচে সারি যুক্ত করতে হবে। "কন্ট্রোলার-ভিত্তিক স্ট্যাটাস বারের উপস্থিতি দেখুন" = না, আমি ভিউডিডোডে নিম্নলিখিত লাইন যুক্ত করুন [[ইউআইএএপ্লিকেশন শেয়ারড অ্যাপ্লিকেশন] সেট স্ট্যাটাসবারহিডেন: এনিমেশন সহ: হ্যাঁ, ইউআইএসটিটাসবার অ্যানিমেশনফ্যাড]; এবং নতুন পদ্ধতি যুক্ত করুন - (বিওএল) পছন্দসত্তা স্ট্যাটাসবারহিডান - হ্যাঁ প্রত্যাবর্তন; "" কন্ট্রোলার-ভিত্তিক স্ট্যাটাস বারের উপস্থিতি দেখুন "যোগ করুন = প্লিস্ট ফাইলে কোনও সংখ্যা নেই
Sandy

prefersStatusBarHiddenআমার জন্য কৌতুকটি কী করেছিল (অন্যান্য
অনুরূপগুলির

34

Plist এ নিম্নলিখিত বৈশিষ্ট্য যুক্ত করুন।

Status bar is initially hidden = YES

View controller-based status bar appearance = NO

এখন স্ট্যাটাস বারটি লুকিয়ে থাকবে।


8
কাঁচা কীগুলি হবে ইউআইএসটিটাসবারহিডন এবং
ইউআইভিউ কনট্রোলারবেসড স্ট্যাটাসবার অ্যাপ্লায়েন্স

27

এই সহজ পদ্ধতিটি ব্যবহার করে দেখুন:


উদ্দেশ্য গ:

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated]
    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
}

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated]
    [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
}

সুইফট:

override func viewWillAppear(animated: Bool) 
{
    super.viewWillAppear(animated)
    UIApplication.sharedApplication().setStatusBarHidden(true, withAnimation: UIStatusBarAnimation.None)
}

override func viewWillDisappear(animated: Bool) 
{
    super.viewWillDisappear(animated)
    UIApplication.sharedApplication().setStatusBarHidden(false, withAnimation: UIStatusBarAnimation.None)
}

1
এটি একটি দুর্দান্ত উত্তর ছিল! এটি বিভিন্ন সহ চেষ্টা করে দেখুন UIStatusBarAnimation, তারা বেশ দুর্দান্ত।
বেদটপকার

ভুলে যাবেন না [super viewWillAppear:animated]এবং[super viewWillDisappear:animated]
সামাব

1
এই সহজ সমাধানটি আমার জন্য কাজ করেছে আইওএস ১০. সাধারণ মানুষ হওয়ার উপায়!
coolcool1994

14

আমি নিম্নলিখিতগুলি করেছিলাম এবং এটি কাজ করছে বলে মনে হচ্ছে (এমনকি আইওএস 8 তেও):

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) {

        [[UIApplication sharedApplication] setStatusBarHidden:YES];
    }
}

- (BOOL)prefersStatusBarHidden {
    return YES;
}

12
  • ইউআইএআইপ্লিকেশন.সেটাসটাসবারেক্স আইওএস 9 হিসাবে অবহিত করা হয়েছে
  • এটি আপনার তথ্য.পুলিস্টিতে ইউআইভিউউকন্ট্রোলারবেসড স্ট্যাটাসবার্পিয়ারেন্স = কোনও নেই বলেই হ্রাস পেয়েছে
  • সুতরাং আমাদের আমাদের সমস্ত ভিউ কন্ট্রোলারে পছন্দসই স্ট্যাটাসবারেক্স ব্যবহার করা উচিত

কোনও ইউআইএনএভিগেশন কন্ট্রোলার জড়িত থাকলে এটি আরও আকর্ষণীয় হয়:

  • যদি নেভিগেশনবারহিডেন = সত্য হয় তবে শিশুটিকে ইউআইভিউউকন্ট্রোলারের পছন্দের স্ট্যাটাসবারাক্স বলা হয়, যেহেতু শিশুটি স্ট্যাটাস বারের অধীনে সামগ্রী প্রদর্শন করছে।
  • যদি নেভিগেশনবারহিডেন = মিথ্যা থাকে তবে ইউআইএনএভিগেশন কন্ট্রোলারের পছন্দের স্ট্যাটাসবারাক্সকে ডাকা হয়, সর্বোপরি এটি স্ট্যাটাস বারের অধীনে সামগ্রী প্রদর্শিত হয়।
  • ইউআইএনএভিগেশন কন্ট্রোলারের ডিফল্ট পছন্দসই স্ট্যাটাসবার্ট স্টিল ইউআইএনএভ.নাভিগেশনবার.বারস্টাইল থেকে মান ব্যবহার করে। .ডাফল্ট = কালো স্ট্যাটাস বার সামগ্রী, ব্ল্যাক = সাদা স্ট্যাটাস বার সামগ্রী।
  • সুতরাং আপনি যদি কিছু কাস্টম রঙে বারটিন্ট কালার সেট করে থাকেন (যা আপনি সম্ভবত হন) তবে আপনার বার স্টাইলও সেট করতে হবে white সাদা স্ট্যাটাস বারের সামগ্রী পেতে ব্ল্যাক করুন। বারস্টিন্টাল কালার সেট করার আগে আমি বারস্টাইলকে কালোতে সেট করতাম, যদি বারস্টাইল বারটিন্টকলারকে ওভাররাইড করে।
  • একটি বিকল্প হ'ল আপনি বার শৈলীর সাথে ঘৃণার চেয়ে ইউআইএনএভিগেশন কন্ট্রোলারকে সাবক্লাস করতে পারেন।
  • তবুও, আপনি যদি ইউআইএনএভিগেশন কন্ট্রোলার সাবক্লাস করেন তবে নেভিগেশনবারহিডেন = সত্য হলে আপনি স্ট্যাটাস বারের উপর কোনও নিয়ন্ত্রণ পাবেন না। কোনওভাবে ইউআইকিট এই পরিস্থিতিতে ইউআইএনএভিগেশন কন্ট্রোলারকে জিজ্ঞাসা না করে সরাসরি শিশু ইউআইভিউউকন্ট্রোলারের কাছে যান। আমি ভাবতাম যে শিশুটিকে> শ্রোগ << জিজ্ঞাসা করা ইউআইএনএভিগেশন কন্ট্রোলারের দায়িত্ব হওয়া উচিত।
  • এবং মোডালপ্রেজেন্টেশনটি স্টাইল = .ফুলস্ক্রিন হলে কেবলমাত্র ইউআইভিউকন্ট্রোলারের স্থিতি দণ্ডে একটি বক্তব্য পাওয়া যায়।
  • যদি আপনি একটি কাস্টম উপস্থাপনা শৈলীর মডেল ভিউ কন্ট্রোলার পেয়ে থাকেন এবং আপনি স্থিতি দণ্ডটি নিয়ন্ত্রণ করতে চান তবে আপনি মডেলপ্রেজিশনক্যাপচারস স্ট্যাটাসবার্পিয়ারেন্স = সত্য সেট করতে পারেন।

আপেল কেন কেবল এক টুকরো পরামর্শ অনুসরণ করতে পারে না? যদি এটি ভেঙে না যায় তবে এটি ঠিক করবেন না!
জার্জেন 89

9

আইওএস 7 এ স্থিতি দণ্ডটি আড়াল করতে আপনার 2 লাইনের কোডের প্রয়োজন

  1. অ্যাপ্লিকেশনটিতে: (ইউআইএআইপ্লিকেশন *) অ্যাপ্লিকেশনটি ফিনিশ লঞ্চিং উইথঅ্যাপশনস: (এনএসডেটরিয় *) লঞ্চঅ্যাপশনগুলি লিখুন

     [[UIApplication sharedApplication] setStatusBarHidden:YES];
    
  2. info.plist এ এটি যোগ করুন

     View-Controller Based Status Bar Appearance = NO
    

8

আরও ভাল বোঝার জন্য মন্তব্য সহ কিছু ফটো যুক্ত করুন:

কোনও পরিবর্তন হওয়ার আগে অ্যাপ

এখানে চিত্র বর্ণনা লিখুন

আপনার Project Navigatorফোল্ডারে নাম পাওয়া গেছে এবং Supporting Files* .পুলিস্ট ফাইলটিতে ক্লিক করুন

এখানে চিত্র বর্ণনা লিখুন

আপনি আপনার অ্যাপ্লিকেশনটির বিভিন্ন সেটিংস দেখানোর পরে দেখিয়েছেন। আপনার 2 টি কী UIStatusBarHiddenএবং যুক্ত করতে হবে UIViewControllerBasedStatusBarAppearance। আপনি কেবল এটি + বোতামে ক্লিক করে করতে পারেন

এখানে চিত্র বর্ণনা লিখুন

+ টিপে আপনি কীগুলির মধ্যে একটি চয়ন করতে পারেন - কেবল টাইপ করা শুরু করুন।

সঠিক সংস্করণ:

এখানে চিত্র বর্ণনা লিখুন

এবং পরিশেষে এই পরিবর্তনগুলি প্রয়োগ করার পরে আবেদন করুন:

এখানে চিত্র বর্ণনা লিখুন

এছাড়াও, আপনি বিকল্প সমাধান এখানে পেতে পারেন


8

আইওএস 10- prefersStatusBarHiddenএ আমার যা করতে হবে তা হ'ল আমার RootViewController(সুইফ্ট) এর ভারটি ওভাররাইড করা :

override var prefersStatusBarHidden: Bool {
    return true
}

7

চেষ্টা কর;

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];

গ্রেট। আমি একবার ব্যবহারকারী লগ ইন এটা দেখান তারপর এই ব্যবহার করতে দৃশ্য নিয়ামক এটিতে প্রয়োজন না ছিল স্ট্যাটাস বার আড়াল করতে সক্ষম হন।
LondonGuy

5

আইওএস 7 এ আপনার স্ট্যাটাস বারটি গোপন করতে:

আপনার প্লিস্ট-ফাইলটি খুলুন, তারপরে "কন্ট্রোলার-ভিত্তিক স্ট্যাটাস বারের চেহারা দেখুন" নামক একটি সারি যুক্ত করুন এবং এর মান সেট করুন NO


5

এখানে সুইফ্ট সংস্করণটি রয়েছে (আইওএস 9 এর পূর্ববর্তী):

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)
    UIApplication.sharedApplication().setStatusBarHidden(true, withAnimation: UIStatusBarAnimation.None)
}

override func viewWillDisappear(animated: Bool) {
    super.viewWillDisappear(animated)
    UIApplication.sharedApplication().setStatusBarHidden(false, withAnimation: UIStatusBarAnimation.None)
}

এটিও কাজ করে (iOS7 +):

override func prefersStatusBarHidden() -> Bool {
    return true
}

আপনাকেও কল করতে হবে:

setNeedsStatusBarAppearanceUpdate()

বলতে viewDidLoad()

মনে রাখবেন যে আপনি যদি একটি স্প্লিটভিউ নিয়ন্ত্রণকারী বা অন্য কোনও containerভিউ কন্ট্রোলার ব্যবহার করেন তবে আপনার ক্লাসটি প্রেরণের সময় এটি ফিরিয়ে আনতে হবে childViewControllerForStatusBarHidden। এটি করার একটি উপায় হ'ল জনসাধারণের জন্য দুর্বল বৈচিত্র্য রয়েছে statusControllerএবং এই ওভাররাইড পদ্ধতিতে এটি ফিরিয়ে দিন।


1
শীর্ষস্থানীয় ব্লকটি iOS8 এ অবহিত করা হয়েছে - আপনার দ্বিতীয় পদ্ধতির ব্যবহার করুন। এবং ধন্যবাদ! আমি অন্য বাধ্যতামূলক কল যুক্ত করতে কোডটি সম্পাদনা করেছি।
ডেভিড এইচ

5

আইওএস 9 এর পরে:

হিসাবে statusBarHiddenপদ্ধতি ছিল অননুমোদিত থেকে iOS9 আপনি নীচের হিসাবে plist দুটি মান যোগ করতে হবে:

<key>UIStatusBarHidden</key>
<true/>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>

বা ব্যবহারকারীর ইন্টারফেস দ্বারা দয়া করে চিত্রের নীচে পুনরায়:

এখানে চিত্র বর্ণনা লিখুন

হিসাবে statusBarHiddenহয় অননুমোদিত থেকে iOS9 :

@property (পড়া ও লেখা, nonatomic, সংগ্রহকারী = isStatusBarHidden) bool statusBarHidden NS_ অননুমোদিত _IOS (2_0, 9_0 , "ব্যবহার করুন - [UIViewController prefersStatusBarHidden]") __TVOS_PROHIBITED;


5

সুইফট 3+ (আইওএস 9, 10) এর জন্য ফিক্সড সলিউশন

1- তথ্যের নীচে সম্পত্তি.পলিট সেট

এখানে চিত্র বর্ণনা লিখুন

2- কোডের নীচে রুট কন্ট্রোলারে, আটকান

 private var isStatusBarHidden = true {
        didSet {
            setNeedsStatusBarAppearanceUpdate()
        }
    }

    override var prefersStatusBarHidden: Bool {
        return isStatusBarHidden
    }

আপনি কল করতে পারেন isStatusBarHidden = trueএবং isStatusBarHidden = falseযেখানে আপনি hide/showস্ট্যাটাস বার করতে চান


4

আপনার এই মানটি প্লিস্টে যুক্ত করা উচিত: "কন্ট্রোলার-ভিত্তিক স্ট্যাটাস বারের উপস্থিতি দেখুন" এবং "NO" এ সেট করুন।


4

IOS এ স্ট্যাটাস বার লুকান জন্য পদক্ষেপ
1. ওপেন AppDelegate.m ফাইল, didFinishLaunchingWithOptions পদ্ধতিতে application.statusBarHidden যোগ

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    application.statusBarHidden = YES;
    return YES;
    }
  1. খোলা তথ্য.প্লেস্ট এবং সেট

View controller-based status bar appearance সেট NO


4

সুইফট 5

আইওএস স্ট্যাটাস বারটি লুকানোর জন্য নিম্নলিখিত পদক্ষেপগুলি ব্যবহার করুন:

  1. তথ্য.প্লেস্টে খুলুন।
  2. নতুন কী যুক্ত করুন নিয়ামক-ভিত্তিক স্থিতি দণ্ডের উপস্থিতি এবং কোনও মান সেট করুন
  3. নতুন কী যোগ স্থিতি দণ্ড প্রাথমিকভাবে লুকানো হয় এবং মান সেট হ্যাঁ
  4. প্রকল্পটি পুনরায় সংকলন করুন।
  5. স্ট্যাটাস বারটি এখন আইওএস ফোনে লুকানো উচিত।

চূড়ান্ত সেটিংস স্ক্রিনশট:

চূড়ান্ত সেটিংস

এটি এক্সকোড 10.2 এ কাজ করছে


2

থেকে UIKit> UIApplication.h:

// Setting statusBarHidden does nothing if your application is using the default UIViewController-based status bar system.
@property(nonatomic,getter=isStatusBarHidden) BOOL statusBarHidden;
- (void)setStatusBarHidden:(BOOL)hidden withAnimation:(UIStatusBarAnimation)animation NS_AVAILABLE_IOS(3_2);

সুতরাং View controller-based status bar appearanceকোন সেট করা উচিত


2

সুসিথার প্রশ্নের উত্তর দিতে: setNeedsStatusBarAppearanceUpdate ব্যবহার করুন । এটি পছন্দসই স্ট্যাটাসবারহিডনে আপনার পছন্দসই স্ট্যাটাস বারের অবস্থার সাথে রিফ্রেশ করার জন্য একটি কল করবে। এটা চেষ্টা কর:

    @property (nonatomic, getter=isHideStatusBar) BOOL hideStatusBar; // Give this a default value early

    - (BOOL)prefersStatusBarHidden {
        return self.isHideStatusBar;
    }

    - (void)someMethod {
    // triggered by an event or user action
    [self setHideStatusBar:YES];
    [self setNeedsStatusBarAppearanceUpdate];
    }

আপনি যদি আবার স্ট্যাটাস বারটি দেখতে চান তবে আপনার সম্পত্তি হাইড স্ট্যাটাসবারকে (বা আপনি যেটাকেই কল করুন) কোনওটিতে সেট করুন। পছন্দ করে স্ট্যাটাসবারহিডিনকে অপ্রত্যক্ষভাবে অন্য কল করে Call

[self setNeedsStatusBarAppearanceUpdate]

1

সুইফট 3 এর জন্য আপডেট:

নিম্নলিখিত তথ্যের সাথে তথ্য.পলিট আপডেট করুন:

View controller-based status bar appearance: NO

তারপরে, ভিউকন্ট্রোলারে বা অন্য কোথাও:

UIApplication.shared.isStatusBarHidden = true

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