Come posso programmare (Objective-C) se un iPad ha un display Retina?Rileva a livello di programmazione se un iPad ha un display Retina?
risposta
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad && [[UIScreen mainScreen] respondsToSelector:@selector(scale)] && [UIScreen mainScreen].scale > 1)
{
// new iPad
}
Anche se tecnicamente corretto, molto probabilmente tornerà vero per tutti i futuri iPad (che potrebbero comunque essere proprio ciò di cui hai bisogno). –
Questo risponde alla domanda, (rileva il display Retina). Ma se hai davvero bisogno di conoscere la versione del dispositivo, vedi [qui] (http://stackoverflow.com/questions/9638970/ios-the-new-ipad-uidevicehardware-hw-machine-codename) per una risposta che identifica tutti i dispositivi . – bobobobo
funziona sia per iOS 7 che per iOS 8. Grazie! – imcc
Come altri utenti hanno risposto, è necessario verificare le caratteristiche piuttosto che i modelli. Tuttavia, nei pochi casi oscuri in cui è possibile identificare un particolare modello, è possibile utilizzare il comando sysctrl hw.machine nel modo seguente. Nota che se non puoi identificare il modello, è molto probabile perché il tuo codice è in esecuzione su un nuovo modello, quindi dovresti fare qualcosa di sensato in quel caso.
#include <sys/types.h>
#include <sys/sysctl.h>
// Determine the machine name, e.g. "iPhone1,1".
size_t size;
sysctlbyname("hw.machine", NULL, &size, NULL, 0); // Get size of data to be returned.
char *name = malloc(size);
sysctlbyname("hw.machine", name, &size, NULL, 0);
NSString *machine = [NSString stringWithCString:name encoding:NSASCIIStringEncoding];
free(name);
Ora è possibile confrontare "macchina" con valori noti. Ad esempio, per rilevare i modelli iPad (marzo 2012):
if ([machine hasPrefix:@"iPad3,"]) NSLog(@"iPad (March 2012) detected");
Ho già testato la mia app sull'emulatore iPad (Retina) e ha funzionato. Ho pensato che avrei avuto un problema a causa della nuova risoluzione del nuovo iPad, ma mi sbagliavo completamente. Grazie comunque, questo può essere utile per gli altri. – Freedom
- 1. Suffisso display Retina iPad
- 2. Come rilevare se l'iPhone ha un display retina o no?
- 3. Coordinate XCode per display Retina iPad
- 4. Webapp su iPad 3 retina display pittura a schermo lento
- 5. Come posso rilevare se un Mac ha un display Retina da Java?
- 6. CATiledLayer Prestazioni PDF scadenti su Retina Display iPad 3
- 7. Android: Rileva a livello di programmazione se il dispositivo ha il pulsante menu hardware
- 8. Aggiorna l'app per canvas non retina sul display retina
- 9. Retina iPad Specific CSS
- 10. Javascript: Rileva se un evento è attivato dall'utente e non a livello di programmazione
- 11. Display retina VS normale differenza colori display
- 12. Display PhoneGap e Retina
- 13. storyboard separate per iPhone/iPhone Retina/iPad/iPad Retina
- 14. CoreGraphics per display retina
- 15. Ingrandire un MKMapView a livello di programmazione
- 16. Sviluppo per display Retina e non retina OpenGL ES
- 17. Rileva quando è collegato un nuovo display
- 18. immagine del display retina con puro css
- 19. Rileva a livello di programmazione se la JVM utilizza o meno la condivisione di classi?
- 20. Come simulare un display retina (modalità HiDPI) in Mac OS X 10.8 Mountain Lion su un display senza retina?
- 21. Immagini per display retina iphone
- 22. Display retina e [UIImage initWithData]
- 23. Immagini per display retina iphone 5
- 24. Retina display per un'immagine dall'URL
- 25. NSImage e retina display confusione
- 26. Come creare un modulo di Windows a livello di programmazione?
- 27. Problema di qualità dell'immagine del display Retina
- 28. Retina Display Immagini su iPhone
- 29. Pulsante Aggiungi a un layout a livello di programmazione
- 30. Display retina UIWebView e iPhone 4
Utilizzando quale lingua? – BoltClock
Perché? In generale, dovresti rilevare e regolare per _features_ piuttosto che dispositivi specifici. –
@BoltClock obiettivo-c. – Freedom