Untuk mendeteksi tampilan Retina dengan andal di semua perangkat iOS, Anda perlu memeriksa apakah perangkat itu menjalankan iOS4 + dan apakah [UIScreen mainScreen].scale
propertinya sama dengan 2.0. Anda TIDAK BISA mengasumsikan perangkat menjalankan iOS4 + jika scale
properti ada, karena iPad 3.2 juga mengandung properti ini.
Pada iPad yang menjalankan iOS3.2, skala akan mengembalikan 1.0 dalam mode 1x, dan 2.0 dalam mode 2x - meskipun kita tahu bahwa perangkat tidak mengandung layar Retina. Apple mengubah perilaku ini di iOS4.2 untuk iPad: ini mengembalikan 1.0 dalam mode 1x dan 2x. Anda dapat menguji ini sendiri di simulator.
Saya menguji -displayLinkWithTarget:selector:
metode pada layar utama yang ada di iOS4.x tetapi tidak iOS3.2, dan kemudian memeriksa skala layar:
if ([[UIScreen mainScreen] respondsToSelector:@selector(displayLinkWithTarget:selector:)] &&
([UIScreen mainScreen].scale == 2.0)) {
// Retina display
} else {
// non-Retina display
}