Cách đúng để đặt lại nút mũi tên tint trong ios 13 là gì


11

Trong ios 13, Apple đã giới thiệu đối tượng proxy UINavestionBarAppparent mới để đặt giao diện thanh điều hướng. Tôi đã có thể thiết lập hầu hết mọi thứ tôi cần ngoại trừ một điều nhỏ. Mũi tên của nút quay lại luôn được hiển thị với màu xanh lam và tôi không biết làm cách nào để đặt nó thành màu tôi muốn. Tôi đang sử dụng cách cũ [[UINavigationBar appearance] setTintColor:], nhưng tôi nghĩ rằng phải có một số cách để làm điều đó với API đối tượng UINavlationBarAppparent. Có ai có ý kiến ​​gì không?

Câu trả lời:


1

Cách mới để đặt màu cho nút quay lại của giao diện (proxy) sẽ là:

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

Tôi có một menu tùy chỉnh thiết lập bộ điều khiển trong ứng dụng của tôi, làm biến đổi navigationBars titleTextAttributes, tintColorvà những người khác tùy thuộc vào kịch bản khác nhau.

Chạy ứng dụng trên iOS 13, backBarButtonItemmũi tên có màu xanh lam mặc định. Trình gỡ lỗi xem cho thấy chỉ có UIBarButtonItems UIImageViewcó tông màu xanh này.

Điều cuối cùng tôi làm là thiết lập navigationBar.tintColorhai lần để nó thay đổi màu sắc ...

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)

    }


Phần kỳ lạ nhất khi tìm kiếm giải pháp là kết quả không nhất quán, khiến tôi nghĩ rằng nó liên quan đến việc xem vòng đời và / hoặc hình động xuất hiện hoặc bộ đệm Xcode :)


2
Không thể tin tất cả các bản sửa lỗi mà chúng tôi cần phải làm để hỗ trợ iOS 13: / Cảm ơn vì đã sửa lỗi btw!
Sreejith

Thật kỳ lạ, tôi không phải thiết lập nó .nonehoặc nil, tôi chỉ cho nó một màu sau khi thiết lập diện mạo và nó chỉ hoạt động
Đánh dấu
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.