2014-03-05 3 views
0

Я не могу получить хорошие результаты, когда пытаюсь прочитать разрешение своего устройства.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

код имя_компьютера:

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

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

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

ответ

3

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

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

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

+0

это особенность сетчатки? – Vyacheslav

+1

это свойство UIScreen. Он вернет 1.0f на не сетчатку и 2.0f на сетчатку. – davbryn

+0

Спасибо за ответ. – Vyacheslav

2

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

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

CGFloat screenScale = [[UIScreen mainScreen] scale]; 

Это даст вам масштаб экрана. Для всех iPhone и iPodTouches, у которых НЕ есть Retina Displays, вернет 1.0f, в то время как устройства Retina Display будут давать 2.0f.

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

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

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

Для более подробной информации читайте this link

+0

Другой ответ был быстрее. В любом случае, спасибо. – Vyacheslav

Смежные вопросы