2012-05-07 19 views
12

¿Hay algún método para verificar la versión/modelo de un iPad (es decir, iPad 1/2/3)? Estoy usando algo de transparencia en las interfaces de mi iPad con varias superposiciones. Si bien funciona satisfactoriamente en un iPad 2, un iPad 1 no ofrece una experiencia de usuario tan agradable. Así que me gustaría eliminar la transparencia en el iPad 1, pero no puedo encontrar una manera de saber con qué iPad estoy tratando.Cómo verificar mediante programación la versión/modelo de iPad

¿Existe algún truco para distinguir entre el iPad 1 y las versiones superiores que tienen un procesador gráfico más potente (es decir, actualmente iPad 2 + 3)?

He leído que es posible en el navegador web, por lo que debe haber una manera de obtener el número de modelo en el código también.

Respuesta

12

puedo comprobar la presencia de una cámara, que no está disponible en el iPad 1. Desde el 2 y 3 tienen capacidades de CPU similares, esto me ha funcionado bien (estoy en una situación similar, pero con memoria).

if ([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera]) 
    NSLog(@"iPad 2 or 3"); 
else 
    NSLog(@"iPad 1"); 
+2

Esto parece el más simple y hará el trabajo! –

13

espero que es lo que necesita:

NSString *platform = [self platform]; 

    if ([platform isEqualToString:@"iPhone1,1"]) return @"iPhone 1G"; 
    if ([platform isEqualToString:@"iPhone1,2"]) return @"iPhone 3G"; 
    if ([platform isEqualToString:@"iPhone2,1"]) return @"iPhone 3GS"; 
    if ([platform isEqualToString:@"iPhone3,1"]) return @"iPhone 4"; 
    if ([platform isEqualToString:@"iPhone3,3"]) return @"Verizon iPhone 4"; 
    if ([platform isEqualToString:@"iPhone4,1"]) return @"iPhone 4S"; 
    if ([platform isEqualToString:@"iPhone5,1"]) return @"iPhone 5 (GSM)"; 
    if ([platform isEqualToString:@"iPhone5,2"]) return @"iPhone 5 (GSM+CDMA)"; 
    if ([platform isEqualToString:@"iPhone5,3"]) return @"iPhone 5c (GSM)"; 
    if ([platform isEqualToString:@"iPhone5,4"]) return @"iPhone 5c (Global)"; 
    if ([platform isEqualToString:@"iPhone6,1"]) return @"iPhone 5s (GSM)"; 
    if ([platform isEqualToString:@"iPhone6,2"]) return @"iPhone 5s (Global)"; 
    if ([platform isEqualToString:@"iPhone7,1"]) return @"iPhone 6+"; 
    if ([platform isEqualToString:@"iPhone7,2"]) return @"iPhone 6"; 

    if ([platform isEqualToString:@"iPod1,1"])  return @"iPod Touch 1G"; 
    if ([platform isEqualToString:@"iPod2,1"])  return @"iPod Touch 2G"; 
    if ([platform isEqualToString:@"iPod3,1"])  return @"iPod Touch 3G"; 
    if ([platform isEqualToString:@"iPod4,1"])  return @"iPod Touch 4G"; 
    if ([platform isEqualToString:@"iPod5,1"])  return @"iPod Touch 5G"; 

    if ([platform isEqualToString:@"iPad1,1"])  return @"iPad"; 
    if ([platform isEqualToString:@"iPad2,1"])  return @"iPad 2 (WiFi)"; 
    if ([platform isEqualToString:@"iPad2,2"])  return @"iPad 2 (GSM)"; 
    if ([platform isEqualToString:@"iPad2,3"])  return @"iPad 2 (CDMA)"; 
    if ([platform isEqualToString:@"iPad2,4"])  return @"iPad 2 (WiFi)"; 
    if ([platform isEqualToString:@"iPad2,5"])  return @"iPad Mini (WiFi)"; 
    if ([platform isEqualToString:@"iPad2,6"])  return @"iPad Mini (GSM)"; 
    if ([platform isEqualToString:@"iPad2,7"])  return @"iPad Mini (GSM+CDMA)"; 
    if ([platform isEqualToString:@"iPad3,1"])  return @"iPad 3 (WiFi)"; 
    if ([platform isEqualToString:@"iPad3,2"])  return @"iPad 3 (GSM+CDMA)"; 
    if ([platform isEqualToString:@"iPad3,3"])  return @"iPad 3 (GSM)"; 
    if ([platform isEqualToString:@"iPad3,4"])  return @"iPad 4 (WiFi)"; 
    if ([platform isEqualToString:@"iPad3,5"])  return @"iPad 4 (GSM)"; 
    if ([platform isEqualToString:@"iPad3,6"])  return @"iPad 4 (GSM+CDMA)"; 
    if ([platform isEqualToString:@"iPad4,1"])  return @"iPad Air (WiFi)"; 
    if ([platform isEqualToString:@"iPad4,2"])  return @"iPad Air (Cellular)"; 
    if ([platform isEqualToString:@"iPad4,3"])  return @"iPad Air"; 
    if ([platform isEqualToString:@"iPad4,4"])  return @"iPad Mini 2 (WiFi)"; 
    if ([platform isEqualToString:@"iPad4,5"])  return @"iPad Mini 2 (Cellular)"; 
    if ([platform isEqualToString:@"iPad4,6"])  return @"iPad Mini 2 (Rev)"; 
    if ([platform isEqualToString:@"iPad4,7"])  return @"iPad Mini 3 (WiFi)"; 
    if ([platform isEqualToString:@"iPad4,8"])  return @"iPad Mini 3 (A1600)"; 
    if ([platform isEqualToString:@"iPad4,9"])  return @"iPad Mini 3 (A1601)"; 
    if ([platform isEqualToString:@"iPad5,3"])  return @"iPad Air 2 (WiFi)"; 
    if ([platform isEqualToString:@"iPad5,4"])  return @"iPad Air 2 (Cellular)"; 

    if ([platform isEqualToString:@"i386"])   return @"Simulator"; 
    if ([platform isEqualToString:@"x86_64"])  return @"Simulator"; 

El código proviene de: https://gist.github.com/1323251

+1

+1 por buena respuesta! – rishi

+2

¡Es para códigos como este que las matrices fueron inventadas! – trojanfoe

+1

Realmente no confiaría en este código para otra cosa que no sea la depuración; es bastante bajo nivel y carece de documentación explícita. Hay otras maneras de lograr lo que el OP necesita. –

1

Erica Sadun tiene utilidades para esto, escritas como categorías en . Disponible en su github repo uidevice-extension. UIDevice-Hardware.h/m específicamente hace lo que quiere. Admite iPhone 5.

Cuestiones relacionadas