সর্বশেষ আপডেট (এক্সকোড 10+ / সুইফ্ট 4.2+)
বিগত বেশ কয়েক বছর ধরে উপস্থিত বিভিন্ন পদ্ধতির পিছনে যুক্তি বুঝতে আগ্রহী যে কেউ এই নিবন্ধটি অক্ষত রয়েছে। এদিকে, এক্সকোড 10 হিসাবে , সুইফ্ট 4.2 প্রথম পদ্ধতির অবমূল্যায়ন করা হয়েছে এবং এটি আর সমর্থিত নয় (যেমন আপনি এটি নিযুক্ত করার চেষ্টা করলে কার্যকর হবে না )। Plist.infoপতাকার পিছনে যুক্তি এবং কাস্টমাইজিং অনুশীলনটি আরও ভালভাবে বোঝার জন্য এটি এখনও আপনার তথ্যের জন্য উল্লেখ করা হয়েছে ।
গুরুত্বপূর্ণ ব্যাখ্যা
স্ট্যাটাস বারের উপস্থিতিটি কাস্টমাইজ করার জন্য দুটি পদ্ধতির বোঝা খুব গুরুত্বপূর্ণ। এগুলি আলাদা এবং মিশ্রিত হওয়া উচিত নয়।
প্রথম পদ্ধতির - পুরো অ্যাপ্লিকেশনের জন্য একটি রঙ (আইওএস 7 সাল থেকে প্রস্রাবিত)
ইনফিটলিস্টে আপনি একটি কী খুঁজে পান বা তৈরি করেন create
View controller-based status bar appearance
এবং এটি কোন সেট করুন ।
এর মানে কি? এটি মূলত একটি সেটিংস স্থাপন করে যা বলে যে আপনার অ্যাপ্লিকেশনটিতে, স্ট্যাটাস বারের উপস্থিতি প্রতিটি দর্শন নিয়ামক দ্বারা পৃথকভাবে সংজ্ঞায়িত করা হয় না । এটি বুঝতে অত্যন্ত গুরুত্বপূর্ণ। এর অর্থ হল যে সমস্ত স্ক্রিনের জন্য আপনার কাছে পুরো অ্যাপ্লিকেশনের জন্য অভিন্ন সেটিংস রয়েছে। দুটি সেটিংস রয়েছে: defaultযা সাদা ব্যাকগ্রাউন্ডে কালো লেখা বা lightContentকালো পটভূমিতে সাদা পাঠ্য।
এর মধ্যে একটি সেট আপ করতে ( সমস্ত পর্দার জন্য একটি সেটিংস ):
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
application.statusBarStyle = .lightContent // .default
return true
}
প্রতিটি ভিউ কন্ট্রোলারে আপনাকে এই সেটিংটি পুনঃপ্রকাশ করতে হবে না। তবে স্বেচ্ছায় উপস্থিতি পরিবর্তন করতে আপনি সবসময় এই পদ্ধতিটি অবলম্বন করতে পারেন।
দ্বিতীয় পদ্ধতির - প্রতিটি দেখার নিয়ামকের জন্য পৃথক রঙ
এটি বিপরীত। এটিকে কাজ করতে, তথ্য.প্লেস্টে এগিয়ে যান এবং সেট করুন
View controller-based status bar appearance
থেকে হ্যাঁ
এই উপায়ে, যখনই কোনও নতুন ভিউ কন্ট্রোলার খোলা থাকে, আপনি যদি প্রতিটি UIViewControllerক্ষেত্রে এই প্রয়োগটি সন্নিবেশ করেন তবে স্ট্যাটাস বার স্টাইলটি পৃথকভাবে সেট করা থাকে :
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent // .default
}
আপনার মতো প্রথমটি রয়েছে, স্ট্যাটাসবারের জন্য গা dark় বা হালকা স্টাইল সেট করুন, প্রতিটি ভিউ কন্ট্রোলারের জন্য পৃথক।
এই সম্পত্তিটি দুটি পরিস্থিতিতে ইউআইকিট দ্বারা আনা হয়েছে:
- স্ক্রিনটি শুরু করার পরে, যখন ইউআই প্রস্তুত করা হচ্ছে।
setNeedsStatusBarAppearanceUpdate()কোডে কল করার পরে ।
পরবর্তী ক্ষেত্রে, আপনি নিম্নলিখিত কোড দ্বারা স্থিতি দণ্ডের উপস্থিতিগুলি হেরফের করার যোগ্য:
var isDark = false {
didSet {
setNeedsStatusBarAppearanceUpdate()
}
}
override var preferredStatusBarStyle: UIStatusBarStyle {
return isDark ? .lightContent : .default
}
func toggleAppearance() {
isDark.toggle()
}
তারপরে, আপনি যখনই কল করবেন তখন toggleAppearance()স্ট্যাটাসবারের স্টাইল পরিবর্তনটি ট্রিগার করা হবে।
তৃতীয় পদ্ধতির - হ্যাক!
একটি হ্যাক রয়েছে যা সরাসরি স্ট্যাটাসবারে অ্যাক্সেস করতে দেয়:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
if let statusBar = UIApplication.shared.value(forKey: "statusBar") as? UIView {
statusBar.backgroundColor = UIColor.blue
}
return true
}
কেন হ্যাক? আপনার যদি কালো বা সাদা বাদে স্ট্যাটাস বারের রঙের প্রয়োজন হয় তবে আপনি নথিভুক্ত API ব্যবহার করুন। আপনি statusBarকেভিসি ব্যবহার করে অবজেক্ট পাবেন এবং এর পটভূমি রঙ সেট করুন। আপনি যেভাবে UIStatusBarঅবজেক্টটি পান সেটি হ'ল যা উত্স থেকে উত্পন্ন UIViewএবং এইভাবে প্রাকৃতিকভাবে সহায়তা করে backgroundColor। এটি নোংরা, আইনী উপায় নয়, তবে এখনও অবধি স্ট্যাটাসবারের জন্য কাস্টম রঙ সেটআপ করার একমাত্র উপায় (অ্যাকাউন্টের UINavigationBarপদ্ধতিকে গ্রহণ না করা , যা নাবার, স্ট্যাটাসবারের চেহারা সম্পূর্ণরূপে কাস্টমাইজ করতে দেয়)। এটি আপনার অ্যাপ্লিকেশনটিকে ভালভাবে প্রত্যাখ্যান করার দিকে পরিচালিত করতে পারে। তবে আপনি ভাগ্যবান। এবং যদি আপনি কিছু জটিল পরিস্থিতিতে থাকেন (যেমন নেস্টেড, শিশু নেভিগেশন এবং দর্শনীয় নিয়ন্ত্রকদের শ্রেণিবিন্যাস) তবে এটি স্ট্যাটাসবারের চেহারাটি কাস্টমাইজ করার জন্য কমপক্ষে কম ঝামেলাজনক উপায় হতে পারে (উদাহরণস্বরূপ, এটিকে স্বচ্ছ করতে)
এক্সকোড 10+, সুইফট 4.2
বিকল্পগুলির আর কোনও বিকল্প নেই: বিকাশকারীকে প্রতিটি দর্শকের স্ট্যাটাসবারের উপস্থিতি সংজ্ঞায়িত করতে হবে, পতাকাটি হ্যাঁ সেট করে (বা এই ক্রিয়াটি বাদ দেওয়া উচিত, কারণ এটি হ্যাঁ ডিফল্টরূপে হ্যাঁ) এবং উপরের নির্দেশাবলী অনুসরণ করে।
বোনাস
যে কোনও পর্যায়ে স্বেচ্ছায় স্ট্যাটাসবারের উপস্থিতি পরিবর্তন করতে জটিল পরিস্থিতিতে আপনি হ্যাক-ভিত্তিক সমাধানটি (যদিও উত্সাহিত নয়) ব্যবহার করতে পারেন। রঙ-ভিত্তিক, নিম্নলিখিত এক্সটেনশন পদ্ধতিটি নিয়মিত পদ্ধতির সাহায্যে আপনি যা করতে পারতেন ঠিক তা করে। আপনি এটি আপনার প্রয়োজনের সাথে সামঞ্জস্য করতে পারেন।
extension UIViewController {
func setStatusBarStyle(_ style: UIStatusBarStyle) {
if let statusBar = UIApplication.shared.value(forKey: "statusBar") as? UIView {
statusBar.backgroundColor = style == .lightContent ? UIColor.black : .white
statusBar.setValue(style == .lightContent ? UIColor.white : .black, forKey: "foregroundColor")
}
}
}