আইওএস 13 এর জন্য:
.shadowColor
সম্পত্তি ব্যবহার করুন
যদি এই সম্পত্তিটি শূন্য থাকে বা এতে পরিষ্কার রঙ থাকে তবে বারটি কোনও ছায়া দেখায় না
এই ক্ষেত্রে:
let navigationBar = navigationController?.navigationBar
let navigationBarAppearence = UINavigationBarAppearance()
navigationBarAppearence.shadowColor = .clear
navigationBar?.scrollEdgeAppearance = navigationBarAppearence
আইওএস 12 এবং নীচের জন্য:
এটি করার জন্য, আপনার একটি কাস্টম ছায়া চিত্র সেট করা উচিত। তবে ছায়া চিত্রটি দেখানোর জন্য আপনাকে একটি কাস্টম পটভূমি চিত্রও সেট করতে হবে, অ্যাপলের ডকুমেন্টেশন থেকে উদ্ধৃতি:
একটি কাস্টম ছায়া চিত্র দেখানোর জন্য, কাস্টম ব্যাকগ্রাউন্ড চিত্রটি অবশ্যই সেটব্যাকগ্রাউন্ডআইমেজ (_: এর জন্য :) পদ্ধতিতে সেট করতে হবে। যদি ডিফল্ট ব্যাকগ্রাউন্ড চিত্র ব্যবহার করা হয়, তবে এই সম্পত্তির মান নির্বিশেষে ডিফল্ট ছায়া চিত্র ব্যবহৃত হবে।
তাই:
let navigationBar = navigationController!.navigationBar
navigationBar.setBackgroundImage(#imageLiteral(resourceName: "BarBackground"),
for: .default)
navigationBar.shadowImage = UIImage()
উপরে এটি লুকানোর একমাত্র "অফিসিয়াল" উপায় way দুর্ভাগ্যক্রমে, এটি বারের স্বচ্ছতা দূর করে।
আমি ব্যাকগ্রাউন্ড ইমেজ চাই না, শুধু রঙ
আপনার কাছে এই বিকল্পগুলি রয়েছে:
সলিড রঙ, কোনও স্বচ্ছলতা নেই:
navigationBar.barTintColor = UIColor.redColor()
navigationBar.isTranslucent = false
navigationBar.setBackgroundImage(UIImage(), for: .default)
navigationBar.shadowImage = UIImage()
রঙে পূর্ণ ছোট পটভূমি চিত্র তৈরি করুন এবং এটি ব্যবহার করুন।
নীচে বর্ণিত 'হ্যাকি' পদ্ধতিটি ব্যবহার করুন। এটি বারের ਪਾਰুচ্ছন্ন রাখবে।
কীভাবে বার আড়াআড়ি রাখবেন?
স্বচ্ছতা বজায় রাখতে আপনার আরও একটি পদ্ধতির প্রয়োজন, এটি হ্যাকের মতো দেখাচ্ছে তবে ভাল কাজ করে। আমরা যে ছায়াটি সরাতে চাইছি তা হ'ল UIImageView
কোথাও নীচে একটি চুলের পাতলা UINavigationBar
। প্রয়োজনে আমরা এটি খুঁজে পেতে এবং লুকিয়ে রাখতে / দেখাতে পারি।
নীচের নির্দেশাবলী ধরে ধরে নিন যে আপনার চুলের আড়াআড়ি কেবলমাত্র একটি নিয়ামকের মধ্যে লুকানো আপনার চুলের প্রয়োজন UINavigationController
।
উদাহরণ ভেরিয়েবল ঘোষণা করুন:
private var shadowImageView: UIImageView?
পদ্ধতিটি যুক্ত করুন যা এই ছায়া খুঁজে পায় (চুলের পাতায়) UIImageView:
private func findShadowImage(under view: UIView) -> UIImageView? {
if view is UIImageView && view.bounds.size.height <= 1 {
return (view as! UIImageView)
}
for subview in view.subviews {
if let imageView = findShadowImage(under: subview) {
return imageView
}
}
return nil
}
viewWillAppear/viewWillDisappear
পদ্ধতিগুলি যুক্ত / সম্পাদনা করুন :
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if shadowImageView == nil {
shadowImageView = findShadowImage(under: navigationController!.navigationBar)
}
shadowImageView?.isHidden = true
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
shadowImageView?.isHidden = false
}
UISearchBar
হেয়ারলাইনের জন্যও একই পদ্ধতিটি কাজ করা উচিত এবং আপনার প্রায় কোনও কিছুই লুকানোর দরকার নেই :)
আসল ধারণাটির জন্য @ লিও নাটানকে অনেক ধন্যবাদ!