Powiel możliwe:
Detect Retina DisplayZnając typ urządzenia - Retina/non-Retina
Jak możemy wiedzieć, czy urządzenie posiada wyświetlacz siatkówki lub nie z obiektywnych kod C?
Powiel możliwe:
Detect Retina DisplayZnając typ urządzenia - Retina/non-Retina
Jak możemy wiedzieć, czy urządzenie posiada wyświetlacz siatkówki lub nie z obiektywnych kod C?
Możesz sprawdzić właściwość scale
na [UIScreen mainScreen]
, jeśli masz 2.0 na siatkówce, jeśli nie jesteś 1.0. Możesz również uzyskać skalę z bieżącego kontekstu CoreGraphics.
Aplikacja ulegnie awarii, jeśli użytkownik uruchomi ją na iOS <4 –
Prawidłowo. Właśnie dlatego chcesz sprawdzić najpierw, czy [[UIScreen mainScreen] respondsToSelector: @selector (scale)] jest prawdziwe. Jest to ogólna koncepcja sposobu kodowania w celu zapewnienia kompatybilności wstecznej. – GorillaPatch
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]
&& [[UIScreen mainScreen] scale] >= 2.0) {
// Retina
} else {
// Not Retina
}
To prawdopodobnie powinno być> = 2.0 teraz (iPhone 6/6 +) – shabbirv
Nie sądzę, że można określić bezpośrednio. Będziesz musiał wywnioskować to z informacji o modelu, które możesz uzyskać z sysctlbyname (zobacz strony man iOS). Na przykład:
sysctlbyname("hw.machine", NULL, &size, NULL, 0);
char *machine = malloc(size);
sysctlbyname("hw.machine", machine, &size, NULL, 0);
daje z powrotem ciąg jak „iPhone3,1”, który ma wyświetlacz siatkówki, czyli „iPhone 2,1”, który nie ma.
To jest okropny pomysł - nie jest w żaden sposób odporny na przyszłość i nie uwzględnia nawet czwartego genusa iPoda touch, który również ma siatkówkę pokaz. Właściwość 'scale 'klasy' UIScreen', opisana w innych odpowiedziach, jest poprawną metodą. –
Dobra uwaga. Poprawiono mnie. – onnoweb
Po co ci to potrzebne? –
To samo, co [Detect Retina Display] (http://stackoverflow.com/questions/3504173/detect-retina-display) –
Co ma strefa czasowa ma związek z wyświetlaniem Retina? – occulus