ইউআইএসটিটাসবারস্টাইল সুইফটে কাজ করছে না


85

আমি আমার সুইফট অ্যাপ্লিকেশনটিতে স্ট্যাটাস বারের রঙটি সাদা করার চেষ্টা করছি, তবে একটি ইটের প্রাচীরটি আঘাত করছি। আমার কাছে 3 টি ভিউকন্ট্রোলার রয়েছে যা প্রত্যেকে একটি নেভিগেশনকন্ট্রোলারে এম্বেড করা হয়েছে (এটি কি সমস্যা হতে পারে? আমি ইতিমধ্যে কোডটি নেভিগেশনকন্ট্রোলার ক্লাসে রাখার চেষ্টা করেছি।) আমি আমার অ্যাপডেলিগেটের ডিডফিনিশলঞ্চিংয়ের সাথে নিচের কোডের দুটি অংশই চেষ্টা করেছি .swift ফাইল কিন্তু কোনটিই কাজ করে নি।

application.statusBarStyle = .LightContent

এবং

UIApplication.sharedApplication().statusBarStyle = .LightContent

ডকস এর সম্পর্কে যা বলার আছে তা হ'ল ইউআইবারবারটন স্টাইল একটি ইনট এবং আমাকে এই এনাম স্নিপেট দিয়েছে যা আমাকে কোনওভাবেই প্রশংসার সাথে সাহায্য করে নি।

enum UIStatusBarStyle : Int {
    case Default
    case LightContent
    case BlackOpaque
}

আমি কী মিস করছি?

উত্তর:


145

আপনার কাছে দুটি বিকল্প রয়েছে।

আপনি যদি স্ট্যাটাস বারের স্টাইলটি ম্যানুয়ালি সেট করতে চালিয়ে যেতে চান, আপনি যা করছেন তা চালিয়ে যান, তবে আপনাকে নীচের কীটি আপনার info.plist ফাইলটিতে যুক্ত করতে হবে যার মান সহ NO

নিয়ামক ভিত্তিক স্থিতি দণ্ডের উপস্থিতি দেখুন

অথবা, আপনি যদি অ্যাপ্লিকেশনটির স্ট্যাটাস বারস্টাইল সেট করার পরিবর্তে নিয়ামক ভিত্তিক স্ট্যাটাস বারের উপস্থিতি দেখতে অবিরত রাখতে চান, তবে preferredStatusBarStyleপ্রতিটি ভিউ কন্ট্রোলারের সেই বৈশিষ্ট্যটি ওভাররাইড করুন যার জন্য আপনি একটি স্থিতি বার শৈলী নির্দিষ্ট করতে চান।

সুইফট 3

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

সুইফট 2

override func preferredStatusBarStyle() -> UIStatusBarStyle {
    return UIStatusBarStyle.LightContent
}

আমি এই কোডটি চেষ্টা করেছি ... তবে আমি কেবল প্রথম স্ক্রিনে সাদা স্ট্যাটাস বারটি পাই .. বাকি পর্দার জন্য আমি স্ট্যাটাস বারটি পাচ্ছি না :( .. কোনও সহায়তা?
রাহুল

7
আপনার প্লাস্টে আপনাকে "ইয়েস" এ নিয়ন্ত্রণকারী-ভিত্তিক স্ট্যাটাস বারের উপস্থিতি সেট করতে হবে।
স্ট্যাকউন্ডারফ্লো

4
এটি কেবলমাত্র যদি আপনি কোনও ভিউ কন্ট্রোলার ভিত্তিক স্ট্যাটাস বারের উপস্থিতি ব্যবহার করতে চান
স্যাম হোমস

4
আইওএস 10 (সুইফট 3.0) এ এর ​​আর কোনও পদ্ধতি নয় তবে সম্পত্তি। দেখুন: stackoverflow.com/questions/38862208/...
stevo.mit

কেবলমাত্র একটি পর্দার জন্য
ওবায়দা আলকুরান

143

সুইফট 3.0

AppDelegate.swift- এ ফিনিশলঞ্চিং উইথঅপশন রয়েছে

UIApplication.shared.statusBarStyle = .lightContent

তথ্য.পুলিস্ট

View controller-based status bar appearance -> NO

সুইফট 2.2

AppDelegate.swift- এ ফিনিশলঞ্চিং উইথঅপশন রয়েছে

UIApplication.sharedApplication().statusBarStyle = .LightContent

তথ্য.পুলিস্ট

View controller-based status bar appearance -> NO

4
এটি নির্ভুল উত্তর :)
জে মায়ু

4
নিখুঁত উত্তর. স্বল্প ও মধুর.
মেহুল 3'16

4
দুঃখিত, এটি সবচেয়ে সহজ উত্তর হতে পারে তবে এটি অবশ্যই সেরা নয়: কারণ এটি এই এক স্টাইলটি কেবলমাত্র এবং অ্যাপ্লিকেশনটিতে যে কোনও ভিউকন্ট্রোলারকে সেট করে। আচরণটি সূক্ষ্ম নিয়ন্ত্রণ সক্ষম করতে এবং বিভিন্ন দৃশ্যের নিয়ামকদের উপর ভিত্তি করে বিভিন্ন সেটিংস প্রয়োগ করার জন্য চালু করা হয়েছে (উদাহরণস্বরূপ হালকা এবং অন্ধকার সামগ্রীগুলি মিশ্রণ)।
auco

এটি উদ্ভট - অ্যাপল ডক্স যা বলে তা নয়, তবে তা কার্যকর। একটি ইউআইভিউউকন্ট্রোলার ভিত্তিক স্ট্যাটাস বার সহ অন্যান্য বিভিন্ন উপায়ে চেষ্টা করেছেন, তাদের কেউই কাজ করেননি।
n13

33

আপনি সেট করতে হবে:

navigationController.navigationBar.barStyle = .black

এবং টেক্সট সাদা প্রদর্শিত হবে


4
ধন্যবাদ! এমনকি এই ওভাররাইড ফানকে পছন্দসই কিছুতে সহায়তা করা হয়নি স্ট্যাটিসবার্স স্টাইল () -> ইউআইএসটিটাসবারস্টাইল - ইউআইএসটিটাসবারস্টাইল.লাইটকন্টেন্ট-এটি সত্যই সহায়তা করে: নেভিগেশনকন্ট্রোলআরভিগেশনবার.বারসটিল = .ব্ল্যাক ট্রান্সলুসেন্ট নেভিগেশন কন্ট্রোলআরভিশন = বার.ট্রাটস
Svitlana

ধন্যবাদ! আপনি আমার দিন বাঁচিয়েছেন। তবে ব্ল্যাক ট্রান্সলুসেন্ট অবমূল্যায়িত হয়েছে। অতএব, আমি নেভিগেশন
কন্ট্রোল.আরভিগেশন বার.বারস্টাইল

এটি পুরোপুরি সাথে কাজ করছে override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent }। খারাপ কাজ করার জন্য আপনাকে এই লাইনটি লিখতে হবে viewDidLoadView controller-based status bar appearance = YESএই সমাধানটি সাথে রাখবেন তা নিশ্চিত করুন ।
ভাভিন_ম

ওভারকিলের মতো মনে হচ্ছে ... স্রেফ এটি চেষ্টা করে ইনফো.পালিস্ট ফাইলে এটির মতো কাজ করেছে: ১. স্ট্যাটাস বার শৈলী -> ইউআইএসটিটাসবারস্টাইললাইট কনটেন্ট ২.নিয়ন্ত্রক-ভিত্তিক স্ট্যাটাস বারের উপস্থিতি দেখুন -> না
রেস্টলিন

এই পরিবর্তনটি করাতে আমার পিছনের বোতামটি অদৃশ্য হয়ে গেল।
লিওন

21

IOS9.x এবং Xcode7 এর জন্য, কেবল এটি ভিতরে রেখে দিন AppDelegate.swift:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

    UINavigationBar.appearance().barStyle = .Black

} 

এটি আপনার স্ট্যাটাস বারের স্টাইলটি স্বয়ংক্রিয়ভাবে .Lightcontentকোনও ইউআইএনএভিগেশন কন্ট্রোলারের অভ্যন্তরে থাকা সমস্ত দর্শনীয় নিয়ন্ত্রকের জন্য পরিণত করবে ।

(এছাড়াও, মুছুন View controller-based status bar appearance আপনি সম্ভবত যে সতর্কতাগুলি দেখছেন তা দমন করতে তথ্য.প্লেস্ট থেকে !)


ধন্যবাদ. আইওএস 9-তে একটি গুরুতর ত্রুটি রয়েছে বলে মনে হচ্ছে। প্রাথমিক ভিসি সাদাতে স্ট্যাটাস বারটি চালু করতে পারার একমাত্র উপায় ছিল। আমি সব চেষ্টা করেছিলাম। আমি একটি রাডার ফাইল করব।
1b0t

পছন্দসই স্ট্যাটাসবারস্টাইল ইউআইএসটিটাসবারস্টাইলডিফাল্ট ফিরিয়েছে তবে নির্দিষ্ট ভিউকন্ট্রোলারের জন্য লাইটকন্টকে ডার্ককন্টে আপডেট করছে না। স্ব.ব্যাভিগেশন কন্ট্রোল.নার্ভেশনবারের পরে.বার.স্টাইল = ইউআইবার স্টাইলডিফল্ট; ভিউউইল অ্যাপে আমার পক্ষে কাজ করেছে। আশা করি এই মন্তব্যটি অন্যদের সহায়তা করবে।
পান্ডে_ল্যাক্সমান

নোট করুন যে ইউআইএসটিটাসবারস্টাইলকে সুইফট 3
ব্রাইসজল

16

সুইফ্ট 3-এ, স্ট্যাটাস বার শৈলীটি ইউআইভিউকন্ট্রোলারের একটি গণিত সম্পত্তিতে পরিবর্তিত হয়েছে যা আপনি এটির ওভাররাইড করতে পারেন:

override var preferredStatusBarStyle: UIStatusBarStyle {
   return .lightContent //or default
} 

13

আইওএস 9-তে নিম্নলিখিতগুলি (সেটস্ট্যাটাসবারস্টাইল) অবমূল্যায়ন করা হয়েছে এবং আপনি যদি সেই পথে যান তবে আপনি একটি সতর্কতা পাবেন।

UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: true)

আপনি যদি চান যে সমস্ত স্ট্যাটাসবারগুলি একটি একক শটে পরিবর্তিত হয় তবে আপনার ইনফো.পিস্টে নিম্নলিখিতটি যুক্ত করার চেষ্টা করুন। এটি আপনার লঞ্চ-স্ক্রিনের স্ট্যাটাস বারটি সাদা করে তুলবে। যদিও উপরের কোডটি করবে না।

<key>UIStatusBarStyle</key>
<string>UIStatusBarStyleLightContent</string>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>

.Plist পদ্ধতিটি সঠিক, তবে সেটস্ট্যাটাসবারস্টাইল () প্রয়োজনীয় নয়। আইওএস 9.0 এ 'সেটস্ট্যাটাসবারস্টাইল (_: অ্যানিমেটেড :)' অবমূল্যায়ন করা হয়েছিল: ব্যবহার - [ইউআইভিউকন্ট্রোলার পছন্দসই স্ট্যাটাসবার্ট স্টাইল]
বিল চ্যান

@ বিলচান মন্তব্য করার জন্য ধন্যবাদ তবে উত্তর লাভটি দয়া করে পড়ুন। আমি ইতিমধ্যে ব্যাখ্যা করেছি 'সেটস্ট্যাটাসবারস্টাইল' হ্রাস করা হয়েছে। আপনি যদি এক বা অন্য ভিউ নিয়ন্ত্রণকারীদের পরিবর্তন করতে চান তবে আপনার পছন্দসই স্ট্যাটাসবার্ট স্টাইল ব্যবহার করা উচিত। প্লিস্ট পদ্ধতির জন্য হ'ল যারা একাই শটে সমস্ত ভিউকন্ট্রোলার পরিবর্তন করতে চায়। এখানে কোন সঠিক বা ভুল নেই। আপনার কী অর্জন করতে হবে তা কেবল একটি বিষয়।
গুইসসস

4
UIStatusBarStyle = UIStatusBarStyleLightContent (.plist- এ) আমার অ্যাপ্লিকেশনটিকে সাদা স্ট্যাটাস বারের পাঠ্যের সাহায্যে চালু করতে সহায়তা করেছে ... ধন্যবাদ !!!
ক্রিস অলিনসন

10

আমার জন্য উপরে যতক্ষণ না যুক্ত হয় ততক্ষণ কাজ করে না:

self.navigationController?.navigationBar.barStyle = .black;

সুতরাং:

  1. সেট UIViewControllerBasedStatusBarAppearanceথেকে YES.plist
  2. ইন viewDidLoadকলself.setNeedsStatusBarAppearanceUpdate();
  3. পছন্দসই স্ট্যাটাসবারস্টাইলকে ওভাররাইড করুন
    override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent }
  4. Overrided পদ্ধতি আমি সেট navigationBar.barStyleতাই চূড়ান্ত
    জন্য হালকা বিষয়বস্তু:
    override var preferredStatusBarStyle: UIStatusBarStyle { self.navigationController?.navigationBar.barStyle = .black;//or default return .lightContent //or default }
    এবং জন্য কালো সামগ্রী ব্যবহার ডিফল্ট

উত্স এখানে এবং এখানে থেকে

এবং যদি এটি কাজ না করে তবে আপনি একটি যুক্ত করার চেষ্টা করতে পারেন UINavigationController extension:

extension UINavigationController
{
    override open var preferredStatusBarStyle: UIStatusBarStyle {
        if let lastVC = self.viewControllers.last
        {
            return lastVC.preferredStatusBarStyle
        }

        return .default
    }
}

4
নেভিগেশন বার স্টাইলের জন্য কোনও মন্তব্য নেই ... তবে সুইফ্ট 3, এক্সকোড 8 - এ আমার জন্য কাজ করা একমাত্র সমাধান solution
দেশপোটোভিচ

কেবলমাত্র ত্রুটিটি আমি লক্ষ্য করেছি যে এই সমস্ত পদক্ষেপের সাথে এটি পরিবর্তন হয় তবে অ্যানিমেশন ছাড়াই
লুকাশজ 'সেভেরিয়ান' গ্রেলা

6

অদ্ভুত, সুইফট 3.1 এবং এক্সসি 8.2.1 ব্যবহার করে, কিন্তু উপরের সমস্তটি কার্যকর হয়নি didn't

আমি যা করেছি, তা ঠিক

extension UINavigationController
{
    override open var preferredStatusBarStyle: UIStatusBarStyle {
        get {
            return .lightContent
        }
    }
}

প্লিস্ট নেই, অন্য কোনও জিনিস নেই। এইচটিএইচ


সুইফট ৪.২ এর জন্যও কাজ করে।
জিশান

2

সুইফট ৩.০ এ আপনি ভিউ নিয়ন্ত্রণকারী-ভিত্তিক স্থিতি দণ্ডের উপস্থিতির জন্য ভিউকন্ট্রোলারে একটি গেটরকে ওভাররাইড করতে পারেন:

override var preferredStatusBarStyle: UIStatusBarStyle {
    get { return .lightContent }
}

1

আপনার তথ্য.পালিস্ট সম্পাদনা করবেন না। এটি আপনার ভিউকন্ট্রোলারআরউইফ্টটিতে যুক্ত করুন:

override func preferredStatusBarStyle() -> UIStatusBarStyle {
    return UIStatusBarStyle.LightContent
}

1

পদক্ষেপ 1. info.plist যোগ করুন View controller-based status bar appearance -> NO

পদক্ষেপ 2. পদ্ধতিতে কোড যুক্ত করুন যেখানে আপনার স্ট্যাটাস বারের রঙ পরিবর্তন করতে হবে:

UIApplication.shared.statusBarStyle = .lightContent //(or .default)
setNeedsStatusBarAppearanceUpdate()

কোডের মূল লাইন: setNeedsStatusBarAppearanceUpdate()

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