2012-11-01 3 views
6

Ho un'applicazione per iPad con alcuni punti di contatto piuttosto piccoli che sono appena accettabili sullo schermo da 10 pollici di un normale iPad. Mi piacerebbe essere in grado di ottenere il dpi del dispositivo in modo da poter ridimensionare le dimensioni dei piccoli elementi per il mini e qualsiasi mini futuro che viene rilasciato.Come posso rilevare il dpi su un ipad mini?

+0

[Questa risposta] (http://stackoverflow.com/a/7922666/759019) potrebbe aiutare. –

+0

possibile duplicato di [Ottieni ppi di iPhone/iPad/iPod Touch in fase di runtime] (http://stackoverflow.com/questions/3860305/get-ppi-of-iphone-ipad-ipod-touch-at-runtime) –

+0

Nessuno di entrambe le risposte gestisce iPadMini – AlexWien

risposta

4

Il DPI è di 163 pixel per pollice (ppi):

http://www.apple.com/ipad-mini/specs/

Non è possibile ottenere questo livello di codice, quindi sarà necessario per archiviare come una costante nel codice.

+0

Vuole ottenere il valore di DPI a livello di codice, penso. –

+4

Buona fortuna, non puoi. – borrrden

3

Non è possibile ottenere direttamente il valore dpi (o più correttamente ppi), poiché è necessario conoscere il numero di millimetri (o pollici) dello schermo fisico.
Prima di tutto è necessario rilevare se si tratta di un iPad mini o meno, quindi si memorizza il valore dpi per ogni dispositivo (ancora noto) nella propria app.

Come momento della scrittura, questo codice rileva iPad mini:

#include <sys/utsname.h> 
NSString *machineName() 
{ 
    struct utsname systemInfo; 
    if (uname(&systemInfo) < 0) { 
     return nil; 
    } else { 
     return [NSString stringWithCString:systemInfo.machine 
           encoding:NSUTF8StringEncoding]; 
    } 
} 

// detects iPad mini by machine id 
+ (BOOL) isIpadMini { 

    NSString *machName = machineName(); 
    if (machName == nil) return NO; 

    BOOL isMini = NO; 
    if ( [machName isEqualToString:@"iPad2,5"] 
     || [machName isEqualToString:@"iPad2,6"] 
     || [machName isEqualToString:@"iPad2,7"]) 
    { 
     isMini = YES; 
    } 
    return isMini; 
} 

Non è futureproof perché un nuovo ID macchina potrebbe essere introdotto più tardi, ma non esiste un metodo di futuro.
Se è un mini iPad usa 163 dpi, altrimenti usa i link sopra nel commento per calcolare dpi per iPhone e iPad.