Ios 13 में बैक बटन एरो टिंट सेट करने का सही तरीका क्या है


11

Ios 13 में, Apple ने नेविगेशन बार उपस्थिति सेट करने के लिए नया UINavigationBarAppearance प्रॉक्सी ऑब्जेक्ट पेश किया। मैं एक छोटी सी चीज को छोड़कर लगभग सभी चीजों को सेट करने में सक्षम हूं। बैक बटन का तीर हमेशा नीले रंग के रंग के साथ प्रदान किया जाता है और मुझे नहीं पता कि मुझे उस रंग को कैसे सेट करना है जो मुझे चाहिए। मैं पुराने [[UINavigationBar appearance] setTintColor:]तरीके का उपयोग कर रहा हूं , लेकिन मुझे लगता है कि UINavigationBarAppearance Objects API के साथ इसे करने का कोई तरीका है। किसी को भी कोई विचार है कैसे?

जवाबों:


1

उपस्थिति (प्रॉक्सी) के बैक बटन कलर को सेट करने का नया तरीका होगा:

let appearance = UINavigationBarAppearance()

// Apply the configuration option of your choice
appearance.configureWithTransparentBackground()

// Create button appearance, with the custom color
let buttonAppearance = UIBarButtonItemAppearance(style: .plain)
buttonAppearance.normal.titleTextAttributes = [.foregroundColor: UIColor.white]

// Apply button appearance
appearance.buttonAppearance = buttonAppearance

// Apply tint to the back arrow "chevron"
UINavigationBar.appearance().tintColor = UIColor.whiteI

// Apply proxy
UINavigationBar.appearance().standardAppearance = appearance

// Perhaps you'd want to set these as well depending on your design:
UINavigationBar.appearance().compactAppearance = appearance
UINavigationBar.appearance().scrollEdgeAppearance = appearance

5

मैं अपने ऐप है, जो संशोधित में एक कस्टम नेविगेशन नियंत्रक सेटअप navigationBarरों titleTextAttributes, tintColorऔर विभिन्न परिदृश्यों के आधार पर अन्य।

IOS 13 पर ऐप चलाने पर backBarButtonItemतीर का डिफ़ॉल्ट ब्लू टिंट रंग था। डीबगर ने देखा कि केवल इस ब्लू टिंट में UIBarButtonItemएस UIImageViewथा।

क्या मैं समाप्त कर navigationBar.tintColorदो बार यह रंग बदलने के लिए स्थापित कर रहा था ...

public class MyNavigationController: UINavigationController, UINavigationControllerDelegate {

    public var preferredNavigationBarTintColor: UIColor?

    override public func viewDidLoad() {
        super.viewDidLoad()
        delegate = self
    }


    public func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) {

        // if you want to change color, you have to set it twice
        viewController.navigationController?.navigationBar.tintColor = .none
        viewController.navigationController?.navigationBar.tintColor = preferredNavigationBarTintColor ?? .white

        // following line removes the text from back button
        self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)

    }


समाधान की तलाश में सबसे अजीब हिस्सा असंगत परिणाम था, जो मुझे लगता है कि जीवन चक्र और / या उपस्थिति एनिमेशन या Xcode कैश देखने से संबंधित है :)


2
उन सभी हैक-फ़िक्सेस पर विश्वास नहीं कर सकते जिन्हें हमें iOS 13 का समर्थन करने की आवश्यकता है: / फिक्स btw के लिए धन्यवाद!
श्रीजीत

अजीब बात है, मुझे इसे .noneया तो सेट करने की ज़रूरत नहीं है nil, मैं सिर्फ उपस्थिति को निर्धारित करने के बाद इसे रंग देता हूं और यह सिर्फ काम करता है
मार्क
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.