Tüm yanıtlar ayarı UINavigationBar.appearance().tintColor
, Apple'ın içindeki belgelerle çakışıyor UIAppearance.h
.
İOS7 için not: iOS7'de tintColor
mülk taşınmıştır UIView
ve şimdi özel bir kalıtsal davranış açıklanmıştır UIView.h
. Bu kalıtsal davranış, görünüm proxy'siyle çakışabilir ve bu nedenle tintColor
artık görünüm proxy'sine izin verilmez.
Xcode'da, üstbilgi dosyasını incelemek ve özelliğin açıklamalı olduğundan emin olmak için görünüm proxy'si ile kullanmak istediğiniz her özelliğe komut tıklatmanız gerekir UI_APPEARANCE_SELECTOR
.
Bu nedenle, gezinme çubuğu morunu ve görünüm proxy'si aracılığıyla uygulama boyunca beyaz başlığı ve düğmeleri beyazlaştırmanın doğru yolu:
UINavigationBar.appearance().isTranslucent = false
UINavigationBar.appearance().barTintColor = .purple
UINavigationBar.appearance().titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
UIBarButtonItem.appearance().tintColor = .white
Bunun UIBarButtonItem
bir alt sınıf UIView
değil, daha çok olduğunu unutmayın NSObject
. Yani onun tintColor
mülkiyet miras değil tintColor
gelen UIView
.
Ne yazık ki, UIBarButtonItem.tintColor
açıklamalı değil UI_APPEARANCE_SELECTOR
- ama bana bir belge hatası gibi görünüyor. Apple Engineering'in bu radardaki cevabı desteklendiğini belirtiyor.