2012-05-28 18 views
5

Ho un problema che io non sono riuscito a capire. Ho fatto un'app che farà una foto dal davanti e una dalla fotocamera posteriore, quindi unirli insieme.carico retina (alta qualità) immagini Programatically (sui pulsanti)

Il nome dell'app è GroupCam

Tuttavia ho un problema in cui i miei UIButtons non saranno caricati come immagini della retina fin dall'inizio. Se li ho impostati come @ 2x sul builder dell'interfaccia, appaiono in alta qualità ma, una volta ricaricati, vengono visualizzate le versioni basse.

Ciò è dovuto al fatto che, dopo una foto è preso e lo schermo cambia il pulsante immagini cambiano, ma quando l'utente preme il tasto indietro le icone della fotocamera avrà un aspetto orribile (perché le versioni di bassa qualità vengono caricati) .

Si prega di verificare le seguenti immagini:

Prima schermata: solo il pulsante in alto a destra appare distorta perché sto controllando il valore del flash della fotocamera e "loading" l'immagine corrispondente programatically.

First Screen

Seconda schermata: L'utente ha spostato in un altro schermo ed è tornato al primo, tutti i pulsanti sono stati ricaricati e che ora tutti guardano distorto.

Second Screen

Se qualcuno ha qualche idea del perché sta succedendo Vorrei davvero apprezzare!

Grazie.

Edit:

Questo è quanto ho caricare le immagini.

[self.flashButton setImage:[UIImage imageNamed:@"flashOff"] 
          forState:UIControlStateNormal]; 

Ho letto da qualche parte su Internet che facendo ciò caricherà automaticamente la versione più adatta dell'immagine.

Ho provato anche questo, ma il risultato è lo stesso:

[self.takeButton setImage:[UIImage imageNamed:@"takePhoto.png"] forState:UIControlStateNormal]; 
+1

Ho avuto ottimi risultati con immagini normali e retina in un'app. Quindi, quello che ti suggerisco di fare è selezionare la risoluzione normale di queste immagini, e non includerle nel tuo progetto (tramite il terzo riquadro più a destra - deseleziona la casella di controllo). Ora la tua app ha solo immagini retina. Bene, se le cose vanno male, allora qualcosa nella tua app ha rovinato. C'è qualche problema con [UIImage imageNamed: foo.png]. Se modifichi quell'immagine, tutti gli utenti successivi di quell'immagine ottengono l'immagine modificata. Rileggere UIImage imageNamed: –

+2

Quindi ho appena riletto la tua domanda, e ho appena visto questa frase: "Se li ho impostati come" @ 2x "sul builder dell'interfaccia". Quindi, in IB, hai inserito il loro nome come "[email protected]", e questo funziona. Quindi l'unica cosa che posso pensare che il tuo problema potrebbe essere è il formato di "@ 2x". SEI SICURO di aver correttamente chiamato quelle immagini - "[email protected]", NOT & 2x.png ecc. Sembra proprio che iOS non veda i file hi rez e questo è l'UNICO motivo per cui posso pensare che lo spiegherebbe . Quindi prova a rimuovere "@ 2x" in IB, e guarda cosa succede. Scommetto che ti rimetterai in sordina per tutto il tempo. –

+0

sì, sono formattati e denominati correttamente. Le immagini verranno caricate in HD perfettamente fini da sole, l'unico problema è quando li carico in modo programmatico. iOS decide di caricare quello a bassa definizione. – Pochi

risposta

3

Se la vostra applicazione è scattare una foto dalla fotocamera anteriore e uno dalla fotocamera posteriore e la loro unione insieme, allora il dispositivo richiede un fronte fotocamera di fronte. Tutti i dispositivi iOS dotati di fotocamere frontali hanno anche uno schermo retina (a patto che non si sviluppi per l'iPad 2, ma questa è una storia diversa) quindi non dovresti assolutamente avere immagini normali, quindi tutte le tue immagini dovrebbero essere immagini retina. Se non ci sono immagini normali, allora questo problema non dovrebbe accadere affatto. Esegui una copia di backup e prova a eliminare tutte le immagini normali, quindi prova. Perché stai usando UIImage imageNamed: @ "ImageName", come hai detto, dovrebbe selezionare automaticamente l'immagine! In bocca al lupo!

+0

Speravo di trovare il motivo per cui questo sta accadendo, ma questa sembra essere una soluzione. – Pochi

+0

@LuisOscar Ci dispiace, questa era la mia ipotesi migliore :(Prova a segnalare un bug su bugreport.apple.com. – sridvijay

4

Prima di tutto, la sua, probabilmente vale la pena di verificare che vengano effettivamente visualizzate le versioni a bassa risoluzione. Recentemente ho assunto un'ipotesi simile, scambiato la versione a bassa risoluzione dell'immagine con qualcosa di diverso e ho confermato che la versione ad alta risoluzione era ancora in fase di visualizzazione, ma era distorta.

Il mio vero problema, mi aveva messo

<uibutton_superview>.layer.shouldRasterize = YES;

Se uno qualsiasi dei tasti antenati hanno questo set, si potrebbe probabilmente il vostro problema.

3

Il caso dei nomi file delle immagini non ha importanza sul simulatore, ma sul dispositivo.

Utilizzare tutti i casi coerenti. Image.png e [email protected] sono riconosciuti e lavoreranno insieme nel simulatore ma non sul dispositivo. usa image.png e [email protected] Oppure puoi anche usare .jpg a patto che il caso sia corrispondente.

Problemi correlati