2011-04-06 34 views

cevap

5

scale özelliğini [UIScreen mainScreen] numaralı telefondan, eğer 1.0 ise, retina üzerinde çalışıyorsanız kontrol edebilirsiniz. Ölçeği geçerli CoreGraphics Bağlamından da alabilirsiniz.

+2

Ve kullanıcı iOS <4 –

+2

Doğru'da çalıştırırsa uygulama çökecektir. Bu yüzden [[UIScreen mainScreen] toToSelector: @selector (scale)] yanıtı doğruysa ilk önce kontrol etmek istersiniz. Bu geriye dönük uyumluluğu sağlamak için nasıl kodlayacağınıza dair genel bir kavramdır. – GorillaPatch

56
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)] 
    && [[UIScreen mainScreen] scale] >= 2.0) { 
    // Retina 
} else { 
    // Not Retina 
} 
+2

Bu muhtemelen muhtemelen = = 2,0 olmalı (iPhone 6/6 +) – shabbirv

-1

Bunu doğrudan belirleyebileceğinizi düşünmüyorum. Bunu, sysctlbyname'den geri alabileceğiniz model bilgisinden çıkarmak zorunda kalacaksınız (iOS kullanıcı sayfalarına bakın). Örneğin:

sysctlbyname("hw.machine", NULL, &size, NULL, 0); 
char *machine = malloc(size); 
sysctlbyname("hw.machine", machine, &size, NULL, 0); 

geri sana bir retina ekrana sahip "iPhone3,1" ya çıkmadığını "iPhone 2,1" gibi bir dize verecektir.

+0

Bu çok kötü bir fikir. Bu, geleceğe yönelik bir kanıt değil, ve aynı zamanda bir Retina'ya sahip olan dördüncü nesil iPod touch'ı bile hesaba katmıyor Görüntüle. Diğer cevaplarda anlatıldığı gibi 'UIScreen' sınıfı 'scale' özelliği bunu yapmak için doğru yoldur. –

+2

İyi nokta. Ben düzeltilmeyi bekliyorum. – onnoweb