Ho un UINavigationController e l'ho modificato in bianco usando la proprietà Tint della barra di navigazione in Interface Builder. Ma il testo nei pulsanti e il titolo è ancora il colore predefinito, bianco, e così si perde sullo sfondo bianco. Qualcuno sa come aggirare questo?Come modificare il colore del testo sugli elementi del pulsante UINavigationBar
risposta
Come di iOS 5 questo molto più facile, utilizzando l'aspetto delega UIBarButtonItem:
NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:
[UIColor blackColor],
UITextAttributeTextColor,
[UIColor clearColor],
UITextAttributeTextShadowColor, nil];
[[UIBarButtonItem appearance] setTitleTextAttributes: attributes
forState: UIControlStateNormal];
Impostalo nell'applicazione: didFinishLaunchingWithOptions:
Non è possibile iterare il contenuto della vista UINavigationBar per trovare i pulsanti in awakeFromNib?
È possibile. Ma sto facendo un setTextColor: forStates: sui miei pulsanti e sembra essere ignorato. Persevererà comunque. Anche questo confina con l'uso privato di API (o almeno la conoscenza assunta privata della struttura dell'interfaccia utente). – schwa
Oh, lo riprendo, funziona. Vedi risposta successiva ... – schwa
Ho sbirciato in altre viste come questa. Anche se è un po 'API-ish privato, almeno non fa supposizioni: se gli interni cambiano, il tuo codice non rileverà la condizione che stai cercando. Ma non ho ancora fatto UINavigationBar. –
Ecco un modo:
[[theNavigationBar.subviews objectAtIndex:1] setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
[[theNavigationBar.subviews objectAtIndex:2] setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
Tuttavia, enorme, avvertimento. È molto probabile che si interrompa in una versione futura del sistema operativo e non è consigliato.
Per lo meno è necessario eseguire molti test e accertarsi che le ipotesi del layout di sottomenu della barra di navigazione siano corrette.
Lo troverei particolarmente fragile, dal momento che stai accedendo agli oggetti per indice. Più sicuro sarebbe quello di ottenere tutti gli articoli sottodistretto, confrontare le classi con ciò che ti aspetti e persino usare le posizioni. Ma questo è il nocciolo dell'idea proprio lì. :) –
Giusto. Non ho postato il modo reale di farlo. Solo il primo metodo che ha funzionato. Programmazione difensiva ftw. – schwa
Com'è buffo che non ottengo una risposta per quasi due mesi, e poi ne ottengo un intero raccolto ... comunque, ho contrassegnato questa risposta perché è la più scalabile, anche se quello che ho finito con l'abitudine immagini dei pulsanti. speriamo che qualcosa lo renda nell'API ufficiale dalla v3.0. – lawrence
O si utilizza la propria barra dei pulsanti voce sottoclasse con un setter specificato, lus non è iPhone OS 3 supponiamo per esporre colore del testo per ogni bottone
ho fatto come drunknbass suggerito. Ho fatto ricorso a una serie di immagini per il pulsante Indietro in alcuni stati, e pulsanti regolari in alcuni stati, e li ho inseriti in una sottoclasse UIButton personalizzata, impostando gli stili appropriati.
Come soluzione non si adatta particolarmente bene, ma i miei bisogni erano abbastanza semplici. Ha il vantaggio di non rompere se gli ordini subview nei controlli integrati cambiano però, che è l'ovvia svantaggio di tale approccio. Svantaggio di aver bisogno di più immagini. L'altra cosa difficile è gestire un cambiamento di orientamento, poiché i pulsanti dovrebbero cambiare dimensione.
In una nota correlata, se si modifica il colore della tinta della barra di navigazione, non funziona bene con il controller di visualizzazione "Altro" speciale per personalizzare l'ordine di una barra delle schede. Non sembra esserci alcun modo "accettabile" per cambiare il colore della barra degli strumenti in quella vista.
Questa è una soluzione eccellente per una singola barra di navigazione. Ma come hai ammesso, non scala affatto bene. Probabilmente userei una soluzione come questa normalmente. Ma sto lavorando a un'app con requisiti di interfaccia utente molto dinamici. Potrei essere costretto a fare qualcosa di più hacky :-( – schwa
Ecco il modo pulito (basandosi su API pubblica) per fare questo IMHO: si consiglia di utilizzare la proprietà titleView
del navigationItem
per applicarlo proprio UILabel
su cui si personalizzare l'textColor
UILabel* lbl = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 20)];
lbl.textAlignment=UITextAlignmentCenter;
lbl.backgroundColor=[UIColor clearColor];
lbl.textColor=[UIColor colorWithRed:0.18 green:0.2 blue:0.56 alpha:1];
theControllerOnWhichYouWantToHaveATitleWithYourOwnColor.navigationItem.titleView=lbl;
[lbl release];
Questo non influisce sul colore dei pulsanti sinistro e destro della voce di navigazione. – lawrence
-1! :) Ok questo non risolve il pulsante Indietro, ad esempio, ma risolve il problema problema per la vista del titolo principale. Lo stesso approccio potrebbe essere applicato al pulsante Indietro su cui è possibile impostare anche una vista personalizzata. Quindi sono d'accordo che devi costruire la vista corretta con l'immagine di sfondo corretta e così via, ma questo è "fattibile" e con l'API pubblica. – yonel
Ovviamente avrai downvoted se rispondi a una domanda diversa. La tua risposta sarebbe ok per questa domanda: http://stackoverflow.com/questions/599405/iphone-navigation-bar-title-text-color –
for (id subView in theNavigationBar.subviews) {
if ([subView isKindOfClass:[UIButton class]]) {
[(UIButton *)subView setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[(UIButton *)subView setTitleShadowColor:[UIColor clearColor] forState:UIControlStateNormal];
}
}
è possibile modificare l'aspetto del titolo aggiungendo un'etichetta nella barra di navigazione come segue.
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 35)];
label.backgroundColor = [UIColor clearColor];
label.textAlignment = UITextAlignmentCenter;
label.textColor =[UIColor whiteColor];
label.text=self.title;
self.navigationItem.titleView = viewLabel;
[label release];
- 1. Come modificare il testo del pulsante Indietro di uinavigationbar
- 2. UINavigationBar colore del testo del titolo cambiamento e dimensione
- 3. Come cambiare il colore del bordo inferiore di UINavigationBar?
- 4. Come modificare il colore del testo in diversi frammenti
- 5. Android: Come modificare il colore del testo di ProgressDialog?
- 6. Come modificare il colore del testo di IcsSpinner in ActionBarSherlock?
- 7. Come modificare il colore del testo/dei caratteri in reportlab.pdfgen
- 8. Tema AlertDialog: come modificare il colore del testo dell'articolo?
- 9. Come impostare il colore del testo nel pulsante di invio?
- 10. Come cambio il colore del testo di un pulsante?
- 11. Come modificare il testo del pulsante in Swift Xcode 6?
- 12. UIActivityViewController - come modificare il testo del pulsante di annullamento
- 13. UINavigationBar testo dell'etichetta del titolo
- 14. Rendi il colore del link uguale al colore del testo senza conoscere il colore del testo?
- 15. Impossibile modificare il colore del pulsante di scelta su Android
- 16. Come modificare il colore del testo degli elementi in un QListWidget?
- 17. Impossibile modificare il colore degli elementi del tema bootstrap
- 18. come modificare il colore di sfondo del campo di testo UISearchBar e il colore del testo in ios8
- 19. Come cambiare il colore colore del carattere/Testo della UIBarButtonItem sulla barra di navigazione
- 20. Come modificare il testo del titolo e il colore dei pulsanti SENZA cambiare il colore del testo del menu di overflow dell'azione nella nuova barra degli strumenti?
- 21. Modificare il bordo Colore del riquadro di testo
- 22. eclissi con il tema del colore della luna: cambia il colore del pulsante
- 23. Come modificare il colore di UINavigationBar a livello globale?
- 24. Posso cambiare il colore del pulsante Bootstrap?
- 25. Pulsante personalizzato Android; cambiando il colore del testo
- 26. Impossibile modificare il colore del testo attivo su TabLayout
- 27. Animazione del colore del testo
- 28. Come impostare il colore del testo del titolo di UIButton?
- 29. Impossibile modificare il testo del pulsante in HTML e JavaScript
- 30. Come modificare l'immagine del pulsante di cancellazione (pulsante x) o almeno il colore dell'immagine del pulsante di cancellazione in UISearchbar?
Questo potrebbe essere applicato anche ai singoli UIBarButtonItem. Per un pulsante reale della barra potresti scrivere: [button setTitleTextAttributes: textAttributes forState: UIControlStateNormal]; –