2012-04-06 8 views
32

PanoramicaiOS - colore sul simulatore di Xcode è diverso dal colore sul dispositivo

Il colore di sfondo del mio iPhone app nel simulatore (iMac) appare diverso dal colore del dispositivo (iPhone 3GS).

EDIT (sezione seguente è stato aggiunto)

I seguenti sono tutti diversi:

  1. story board di colore (file XI ter)
  2. colore simulatore
  3. colore del dispositivo

Suppongo che dovrei andare con come loo ks sul dispositivo.

Domande

  1. È questo è un problema comune ad affrontare altri sviluppatori e c'è un modo per abbinare i colori (procedura sistematica)?
  2. il colore avrà un aspetto diverso su diverse versioni di iPhone (3gs/4/4s) o tutto il colore?
  3. Mi manca qualcosa, c'è un profilo colore specifico che dovrei usare?
  4. C'è qualcosa come una regola empirica in cui i valori RGB variano di una certa percentuale?
  5. In iPhone 4 e 4S, il colore corrisponde al simulatore? (Non ho un iPhone4 e 4S, quindi non sono sicuro.)
+2

Uno screenshot sarebbe sicuramente di aiuto qui. Quanto diversamente stiamo parlando? – jtbandes

+1

Il dispositivo utilizza il gorilla glass ... e il tuo monitor probabilmente no. Ciò influenzerà in modo sottile il modo in cui l'occhio umano percepisce il colore a causa della distorsione delle onde luminose. Vai sempre con come appare sul dispositivo. Non è probabile che abbia un aspetto diverso tra i dispositivi, a meno che uno di essi non funzioni correttamente. – borrrden

+0

grazie borrden, sì mi piace andare con il colore del dispositivo ma non so come abbinare quei colori – user1046037

risposta

19

merito va a @ Jtbandes per suggerire di inviare le immagini che hanno portato alla soluzione

sto solo rispondendo alla domanda per completezza.

passi che ho seguito:

  1. prendere uno screenshot di immagine nella storyboard
  2. prendere uno screenshot di immagine in un dispositivo (uso di posta flusso/foto al tuo Mac)
  3. Usa selettore colore (parte della tavolozza dei colori di Mac OS) per selezionare lo stesso punto su entrambi gli screenshot
  4. Annotare i valori RGB (disponibili nella tavolozza dei colori mac OS) degli spot scelti nel passaggio 3
  5. confrontare entrambi i valori RGB e vedere la differenza
  6. aggiungere lo scostamento RGB in modo che corrisponda al colore.

compensare mio RGB (non essere seguito ciecamente)

base alla mia esperienza, ho aggiunto i seguenti valori RGB per ottenere il colore che volevo, è ruvida solo ed ha lavorato per me:

  • Red +12
  • verde +19
  • Blu +16

angolazioni diverse (meglio tenerlo orizzontale)

Tenendo il telefono in diverse angolazioni dà anche diverse sfumature, mantenendolo orizzontale ha fatto dare il colore

+2

Quello che fai è in realtà chiamato Gestione del colore: http://en.wikipedia.org/wiki/Color_management – MrTJ

+0

grazie a @MrTJ, la mia comprensione è che iPhone non usa i profili colore e quindi ho seguito i passaggi sopra menzionati, se è un approccio migliore che sarebbe bello sapere. grazie – user1046037

+0

Ottimo post. Sono contemporaneamente grato per i tuoi compensi e deluso per il fatto che sono necessari. Ad occhio nudo però le offerte sono perfette. Finalmente il mio default.png passa con garbo allo sfondo del menu dell'app. – Ternary

1

iPhone fa la gestione dello spazio l'uso del colore, quindi se si desidera una soluzione più "scientifica" è possibile creare il proprio spazio colore ad esempio con CGColorSpaceCreateCalibratedRGB. È comunque a livello di grafica di base.

+0

grazie @MrTJ scusa la mia ignoranza, sto usando le immagini (texture), funziona anche con le immagini? – user1046037

+1

Sì, è possibile impostare lo spazio colore per qualsiasi contesto di rendering compreso lo schermo. Quindi il tuo spazio colore verrà applicato a qualsiasi cosa tu peschi a quel contesto di rendering. Vedi https://developer.apple.com/library/mac/#documentation/graphicsimaging/conceptual/drawingwithquartz2d/dq_color/dq_color.html (in particolare l'ultimo capitolo) e http://developer.apple.com/library/mac/ # qa/qa1396/_index.html – MrTJ

+0

Mentre l'API esiste, sembra che non abbia alcun effetto. Creando un 'CGColor' usando' CGColorSpaceCreateCalibratedRGB() 'e quindi disegnandolo in un contesto DeviceRGB si ottiene esattamente lo stesso valore del colore. (Potrebbe trattarsi di una sospensione da OS X, o includere per motivi di sicurezza futura.) –

8

Il riferimento CGColorSpace corrente (al 3/17/14) include il testo seguente, che indica che sRGB è lo spazio colore del dispositivo nativo per iOS.

Color Spaces e iOS: iOS non supporta ColorSync, quindi tutte le risorse devono essere fornite nello spazio colore del dispositivo nativo: sRGB.

+1

Fornire il collegamento al riferimento citato per migliorare la risposta. – Szymon

+0

@Szymon https://developer.apple.com/library/ios/Documentation/GraphicsImaging/Reference/CGColorSpace/index.html – GuramK

0

Ho avuto un problema simile, soprattutto con i verdi nel mio progetto. Il mio problema è stato che alcune delle risorse che avevo erano create in Illustrator e il colore era impostato su CMYK anziché RGB. Non sono sicuro se questo fosse il tuo problema o no, ma potrebbe essere utile per coloro che incappano in questa domanda in futuro. Ho cambiato l'illustratore "Modalità colore documento" in RGB e tutto va bene.

1

Il modo migliore per convertire i valori RGB per sRGB sta usando "Meter digitale a colori" strumento in Mac, è sufficiente selezionare la casella "Display in sRGB"

Digital Color Meter

quindi utilizzare i valori sRGB nel codice invece di RGB native values

enter image description here

utilizzando questo strumento si può scoprire generica di colore RGB e impostare direttamente a Xcode come valori RGB

5

Come altri hanno sottolineato, questo è un problema di Color Spaces.

due compiti devono essere eseguite:

  1. ottenere il colore di origine utilizzando lo spazio colore sRGB.
  2. Impostare il colore in Interface Builder, utilizzando lo spazio colore sRGB.

Task 1

È possibile utilizzare Digital Color Meter applicazione di Apple per campionare il colore desiderato, utilizzando l'opzione Display in sRGB, ma l'uscita è molto limitata.

Un'altra opzione è utilizzare un'app come SipIt (disponibile gratuitamente su App Store, l'ultima volta che ho controllato). Assicurarsi che si sta campionatura nello spazio colore corretto effettuando:

Preferences -> General -> Color Profiles -> sRGB 

È anche possibile impostare il formato di output (ad esempio stringa esadecimale).

enter image description here Task 2

In Interface Builder, aprire la finestra Colore, scegliere il secondo riquadro, scegliere "RGB Sliders". Quindi fare clic sull'icona a forma di ingranaggio per scegliere il profilo colore sRGB.

enter image description here

Una volta fatto, incollare il valore del colore a lato nel campo Hex Color #

Il gioco è fatto! I tuoi colori dovrebbero ora corrispondere.

Non sono affiliato con SipIt in alcun modo. Ma lo uso da alcuni anni ed è molto utile. Lo consiglierei a qualsiasi designer.

+0

Utilizzando Sip, gli spazi colore corrispondenti tra Sip e Xcode hanno aiutato a ottenere lo stesso colore per il campo esadecimale in Selettore di colori Xcode. +1 per quello :). MA i colori in Xcode e Sketch non corrispondono ancora :( –

0

È possibile utilizzare questo webPage per diversi mazzi di colori in Xcode. ad esempio Colori generici e dispositivo sono leggermente diversi.

0

Si tratta di spazi colore.

Accertarsi di selezionare il colore da uno spazio colore sRGB e di replicare i suoi valori RGBA su Interface Builder selezionando sRGB IEC61966-2.1 dal menu a discesa.

Se si seleziona un colore in uno spazio colore e lo si genera in uno spazio colore diverso, esso apparirà diverso, nonostante abbia replicato gli stessi valori RGBA.

Inoltre, tenere presente che quando si genera un colore tramite codice, utilizzando UIColor(red:green:blue:alpha:), viene generato nello spazio colore sRGB per impostazione predefinita. Ecco perché è così comodo usare questo (invece di Adobe RGB, P3 o qualsiasi altro). Inoltre, sRGB è lo standard più utilizzato attualmente nel settore.

Fatto divertente: il costruttore UIColor che ho menzionato sopra crea colori nello spazio sRGB da Xcode8. Prima, tale funzione li utilizzava per creare nello spazio Generic RGB. Ecco perché potrebbe causare anche confusione.

Ecco una risorsa che si estende sul tema: https://medium.com/@volbap/working-efficiently-with-colors-in-xcode-bc4c58b16f9a

1

più Una soluzione semplice quando si lavora con i file di immagine nel vostro app. In primo luogo, imposta lo spazio colore in Xcode su sRGB IEC61966-2.1 e applica i tuoi colori.Quindi, prima di importare qualsiasi immagine nella tua app, abbina le tue immagini al profilo sRGB IEC61966-2.1 usando l'utility ColorSync su Mac. Ha funzionato perfettamente per me e il mio sfondo ora corrisponde perfettamente alle mie immagini importate. Spero che questo aiuti qualcuno.