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);
Для более подробной информации прочитайте эту ссылку