আইওএস 13 এ পিছনে বোতামের তীর টিন্ট সেট করার সঠিক উপায়টি কী What


11

আইওএস 13 এ, অ্যাপল ন্যাভিগেশন বারের উপস্থিতি সেট করতে নতুন ইউআইএনএভিগেশন বার অ্যাপিয়ারেন্স প্রক্সি অবজেক্টটি প্রবর্তন করেছে। আমি একটি ছোট জিনিস বাদে আমার প্রয়োজনীয় প্রায় সব সেট করতে সক্ষম হয়েছি। পিছনের বোতামটির তীরটি সর্বদা নীল রঙের রঙের সাথে রেন্ডার হয় এবং এটি আমার পছন্দমতো রঙে কীভাবে সেট করা যায় সে সম্পর্কে আমার কোনও ধারণা নেই। আমি পুরানো [[UINavigationBar appearance] setTintColor:]উপায়টি ব্যবহার করছি , তবে আমি মনে করি ইউআইএনএভিগেশনবার অ্যাপিয়ারেন্স অবজেক্টস এপিআই দিয়ে এটি করার কিছু উপায় থাকতে হবে। কারও ধারণা আছে কীভাবে?

উত্তর:


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এবং বিভিন্ন পরিস্থিতিতে উপর নির্ভর করে অন্যদের।

আইওএস 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)

    }


সমাধানের সন্ধান করার সময় সবচেয়ে অদ্ভুত অংশটি ছিল বেমানান ফলাফল, যা আমাকে তার জীবনচক্র এবং / অথবা উপস্থিতির অ্যানিমেশন বা এক্সকোড ক্যাশে দেখার সাথে সম্পর্কিত মনে করে তোলে :)


2
আইওএস 13 সমর্থন করার জন্য আমাদের যে হ্যাক-ফিক্সগুলি করা দরকার তা বিশ্বাস করতে পারি না: / বিটিডব্লিউটির জন্য ধন্যবাদ!
শ্রীজিথ

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