Mam aplikację na iPada z kilkoma dość małymi punktami dotyku, które są ledwo akceptowalne na 10-calowym ekranie normalnego iPada. Chciałbym móc uzyskać rozdzielczość urządzenia, dzięki czemu mogę skalować rozmiar małych elementów mini i innych przyszłych wydań mini.Jak mogę wykryć dpi na iPadzie mini?
Odpowiedz
DPI jest 163 pikseli na cal (ppi):
http://www.apple.com/ipad-mini/specs/
nie można dostać to programowo, więc trzeba będzie przechowywać jako stałą w kodzie.
Chce, aby programowo miał wartość programowania DPI. –
Cóż, powodzenia, nie możesz. – borrrden
Nie można uzyskać wartości dpi (lub bardziej poprawnie ppi) bezpośrednio, ponieważ trzeba znać liczbę milimetrów (lub cale) fizycznego ekranu.
Najpierw musisz wykryć, czy jest to iPad mini, czy nie, a następnie zapisać wartość dpi dla każdego (jeszcze znanego) urządzenia w twojej aplikacji.
W momencie pisania tego kodu wykrywa 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;
}
to nie jest przyszłościowe, ponieważ nowe id maszyna może zostać wprowadzona później, ale nie ma metody przyszłościowe.
Jeśli jest to iPad mini, użyj 163 dpi, w przeciwnym razie użyj linku powyżej w komentarzu, aby obliczyć dpi dla iPhone'a i iPada.
[Ta odpowiedź] (http://stackoverflow.com/a/7922666/759019) może pomóc. –
możliwy duplikat [Get ppi na iPhone/iPad/iPod Touch w czasie wykonywania] (http://stackoverflow.com/questions/3860305/get-ppi-of-iphone-ipad-ipod-touch-at-runtime) –
Brak z obu odpowiedzi obsługuje iPadMini – AlexWien