Eventuali duplicati:
Detect Retina DisplayConoscere tipo di dispositivo - Retina/non-Retina
Come possiamo sapere se un dispositivo ha un display retina o no dal codice obiettivo C?
Eventuali duplicati:
Detect Retina DisplayConoscere tipo di dispositivo - Retina/non-Retina
Come possiamo sapere se un dispositivo ha un display retina o no dal codice obiettivo C?
È possibile controllare la proprietà scale
su [UIScreen mainScreen]
se è 2.0 in esecuzione su retina, se è 1.0 non lo si è. È inoltre possibile ottenere la scala dall'attuale contesto CoreGraphics.
E l'applicazione si bloccherà se l'utente lo esegue su iOS <4 –
corretto. Questo è il motivo per cui si desidera verificare prima se [[UIScreen mainScreen] rispondeToSelector: @selector (scala)] è vero. Questo è il concetto generale di come si codificherà per garantire la retrocompatibilità. – GorillaPatch
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]
&& [[UIScreen mainScreen] scale] >= 2.0) {
// Retina
} else {
// Not Retina
}
Probabilmente dovrebbe essere> = 2.0 ora (iPhone 6/6 +) – shabbirv
Non penso che sia possibile determinarlo direttamente. Dovrai dedurlo dalle informazioni del modello che puoi recuperare da sysctlbyname (vedi le pagine man di iOS). Per esempio:
sysctlbyname("hw.machine", NULL, &size, NULL, 0);
char *machine = malloc(size);
sysctlbyname("hw.machine", machine, &size, NULL, 0);
vi restituirà una stringa come "iPhone3,1", che dispone di un display retina, o "iPhone 2,1", che non ha.
Questa è una pessima idea, non è affatto a prova di futuro e non tiene conto nemmeno dell'iPod touch della quarta generazione, che ha anche una Retina display. La proprietà 'scale' della classe' UIScreen', come descritto nelle altre risposte, è il modo corretto per farlo. –
Buon punto. Sono corretto. – onnoweb
Perché ne hai bisogno? –
Uguale a [Rileva visualizzazione retina] (http://stackoverflow.com/questions/3504173/detect-retina-display) –
Che cosa ha a che fare il fuso orario con il display Retina? – occulus