2011-08-24 15 views

risposta

28

Ciò è perché i valori CGFloat vanno da 0.0 to 1.0 non dal 0 to 255, e valori superiori 1.0 vengono interpretati come 1.0.

Ecco la documentazione: UIColor

16

solo fare questo:

navigationController.navigationBar.tintColor = [UIColor colorWithRed:117/255.0f green:4/255.0f blue:32/255.0f alpha:1]; 
+0

Ho fatto questo e ora viene visualizzato come nero invece che rosso scuro – aryaxt

+0

Sembra che tu stia vedendo solo bianco o nero solo per tutte le opzioni ... sei sicuro di non avere un monitor B & N? :) assicurati di non ignorare questo colore della tinta da qualche altra parte nella tua app. – TommyG

+0

Non penso sia così. perché quando uso [UIColor redColor], o qualsiasi altro colore definito, funziona bene – aryaxt

6

Devi dividere ogni valore per 255. Prova:

[UIColor colorWithRed:117/255.0f green:4/255.0f blue:32/255.0f alpha:1] 
+5

questi valori devono essere float e non interi, altrimenti il ​​risultato sarà un numero intero. –

+1

@ JoãoPortela: ho modificato la risposta in modo che i valori rimangano come float. –

3

Trovo che se si proviene da sul web o da qualcosa come Photoshop, è più facile lavorare con colori esadecimali. È possibile utilizzare questa macro per questo:

//RGB color macro 
#define UIColorFromRGB(rgbValue) [UIColor \ 
colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 \ 
green:((float)((rgbValue & 0xFF00) >> 8))/255.0 \ 
blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0] 

e usarlo in questo modo:

self.navigationBar.tintColor = UIColorFromRGB(0xd8dadf); 
0

Ah, questo è divertente. La vera risposta è che .tintColor imposta il colore per gli elementi di navigazione del controller di navigazione (come un pulsante "Fatto").

+0

È solo in questo modo nel recente iOS, non quando la domanda è stata posta. – zeroimpl

Problemi correlati