Ipad Mini Retina неправильное разрешение экрана

Я не могу получить хорошие результаты, когда я пытаюсь прочитать разрешение моего устройства.

Такой код

 CGRect screenRect = [[UIScreen mainScreen] bounds];
     CGFloat screenWidth = screenRect.size.width;
     CGFloat screenHeight = screenRect.size.height;
     NSString* name = [self machineName];

дает

1024*768 и iPad4,5

код MachineName:

#import <sys/utsname.h>
-(NSString*) machineName()
{
    struct utsname systemInfo;
    uname(&systemInfo);

    return [NSString stringWithCString:systemInfo.machine
                              encoding:NSUTF8StringEncoding];
}

Что я делаю неправильно? Я не могу понять Должно быть 2048*1536

2 ответа

Решение

Bound возвращает размеры экрана в точках.

Вам нужно запросить CGFloat scale = [[UIScreen mainScreen] scale];

и умножьте это на ширину / высоту, чтобы получить значение пикселя

Попробуйте это, чтобы получить разрешение экрана в пунктах...

(1) Найти масштаб экрана, используя метод ниже

CGFloat screenScale = [[UIScreen mainScreen] scale];

Это даст вам масштаб экрана. Для всех iPhone и iPodTouches, которые не имеют Retina дисплеев, вернется 1,0f, в то время как Retina Display устройства даст 2,0f.

Теперь, если вы хотите получить ширину и высоту экрана устройства iOS, вам нужно сделать одну простую вещь.

(2) Умножая на масштаб экрана, вы получаете фактическое разрешение в пикселях.

CGSize screenSize = CGSizeMake([[UIScreen mainScreen] bounds].size.width * screenScale, [[UIScreen mainScreen] bounds].size.height * screenScale);

Для более подробной информации прочитайте эту ссылку

Другие вопросы по тегам