Pertanyaan apa kode untuk mendeteksi apakah aplikasi ios berjalan di iPhone, layar Retina iPhone, atau iPad?


apa kode untuk mendeteksi apakah aplikasi ios berjalan di iPhone, layar Retina iPhone, atau iPad?

Latar Belakang:

  • untuk aplikasi iPhone saya, saya telah mendefinisikan di halaman target / ringkasan XCode gambar khusus untuk: Gambar peluncuran iPhone, gambar peluncuran layar retina iPhone, potret iPad & lanskap iPad.

  • di tampilan utama ada subview UIImageView yang saya gunakan untuk gambar latar belakang - saat ini saya menetapkan ini di XCode (tidak secara pemrograman) dengan memilih gambar yang saya gunakan untuk gambar peluncuran iPhone.

Jadi saya bertanya bagaimana cara mengetahui mana yang saya jalankan dalam sehingga di viewDidLoad saya dapat memuat gambar latar belakang resolusi yang sesuai. Maka harus ada transisi mulus antara gambar latar belakang untuk memulai aplikasi, dan latar belakang layar utama aplikasi begitu dimulai.


10
2017-08-27 20:51


asal


Jawaban:


Kamu dapat memakai [[UIDevice currentDevice] userInterfaceIdiom] untuk menentukan apakah Anda menjalankan iPhone / iPod touch atau iPad.

Seringkali tidak perlu menentukan secara langsung apakah Anda berada di layar retina karena UIImage menangani itu secara otomatis ketika Anda menggunakan imageNamed dan tambahkan "@ 2x" ke nama file gambar beresolusi tinggi Anda (lihat Mendukung Layar Resolusi Tinggi dalam Panduan Menggambar dan Pencetakan untuk iOS).

Jika Anda benar-benar perlu tahu resolusi mana yang dimiliki layar, gunakan UIScreen's scale metode.


18
2017-08-27 21:04



Berikut adalah 2 metode kelas yang bermanfaat yang saya gunakan, yang secara langsung menjawab pertanyaan Anda - yang mungkin ingin Anda gunakan lebih lanjut:

+(BOOL)isPad
{
#ifdef UI_USER_INTERFACE_IDIOM
    return UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad;
#endif
    return NO;
}

+(BOOL)hasRetinaDisplay
{
    // checks for iPhone 4. will return a false positive on iPads, so use the above function in conjunction with this to determine if it's a 3GS or below, or an iPhone 4.
    if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)] && [[UIScreen mainScreen] scale] == 2)
        return YES;
    else
        return NO;
}

8
2017-08-28 20:22



Untuk Solusi Swift:

 if (UIDevice.currentDevice().userInterfaceIdiom == UIUserInterfaceIdiom.Pad)     
 {
        // Ipad
 }
 else 
 {
       // Iphone
 }

1
2018-03-16 14:53



Lihat @interface UIDevice

serta dokumentasi di -[UIImage scale] (meskipun ada sumber daya yang lebih baik, yang kemungkinan akan diposkan).


0
2017-08-27 20:54



Berikut ini beberapa kode untuk menyalin dan menempel ...

bool runningOniPhone;
if([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone){
    runningOniPhone = TRUE;
} else {
    runningOniPhone = FALSE;
}

0
2017-10-25 01:22