Tất cả các câu trả lời thiết lập UINavigationBar.appearance().tintColor
xung đột với tài liệu của Apple trong UIAppearance.h
.
Lưu ý cho iOS7: Trên iOS7, thuộc tintColor
tính đã được chuyển đến UIView
và hiện có hành vi được kế thừa đặc biệt được mô tả trong UIView.h
. Hành vi được kế thừa này có thể xung đột với proxy xuất hiện và do đó tintColor
hiện không được phép với proxy xuất hiện.
Trong Xcode, bạn cần nhấp chuột vào từng thuộc tính bạn muốn sử dụng với proxy xuất hiện để kiểm tra tệp tiêu đề và đảm bảo thuộc tính được chú thích UI_APPEARANCE_SELECTOR
.
Vì vậy, cách chính xác để tô màu thanh điều hướng màu tím và tiêu đề và các nút màu trắng trong suốt ứng dụng thông qua proxy xuất hiện là:
UINavigationBar.appearance().isTranslucent = false
UINavigationBar.appearance().barTintColor = .purple
UINavigationBar.appearance().titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
UIBarButtonItem.appearance().tintColor = .white
Lưu ý rằng đó UIBarButtonItem
không phải là một lớp con của UIView
mà là NSObject
. Vì vậy, tintColor
tài sản của nó không phải là thừa kế tintColor
từ UIView
.
Thật không may, UIBarButtonItem.tintColor
không được chú thích với UI_APPEARANCE_SELECTOR
- nhưng dường như đó là một lỗi tài liệu. Phản hồi từ Apple Engineering trong radar này nói rằng nó được hỗ trợ.