2010-07-18 1 views
5

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

Я бы за исключением при выборе тренажера iphone4 для запуска приложения на том, что [[UIScreen mainScreen] bounds] даст мне 960x640, но вместо этого он все еще дает мне старую резолюцию (480x320)?

Хотя симулятор iphone4 выглядит как гигантский телефон на моем экране, кажется, что он по-прежнему состоит только из 480x320 пикселей. Например, когда я хочу отобразить что-то на линии 700, это просто упадет с экрана?

Спасибо за любой ввод.

ответ

8

UIScreen имеет новый метод scale. Умножьте bounds.size на масштаб, чтобы получить пиксели. Вы можете думать о немасштабированных значениях как о точках или виртуальных пикселях.

Обратите внимание, что UIScreen имеет метод масштабирования с по меньшей мере 3,2, но он был зарегистрирован только с 4.0, поэтому responsesToSelector обманет вас. Я проверяю UIImage на масштаб, даже когда хочу узнать о UIScreen.

UIScreen *mainScreen = [UIScreen mainScreen]; 
CGFloat scale = [mainScreen scale]; 
CGRect bounds = [mainScreen bounds]; 
CGRect pixels = bounds; 

if (scale > 0) { 
    pixels.origin.x *= scale; 
    pixels.origin.y *= scale; 
    pixels.size.width *= scale; 
    pixels.size.height *= scale; 
} 
+0

Thx для вашего ответа. Есть ли шанс ответить на мой второй вопрос? – Oysio

4

Что касается вашего второго вопроса о разрешении, возможно, это поможет вам.
От iOS4 и более поздних есть пиксели, точки и масштабные коэффициенты.

[[UIScreen mainScreen] bounds] 

bounds will return points (480x320) не пикселей (960x640).
iOS4 Application Programming Guide (очки против пикселей):

В прошивке 4 и более поздние версии, то UIScreen, UIView, UIImage и CALayer классы выставить масштабный коэффициент, который говорит вам отношения между точками и пикселями для этого конкретный объект. До iOS 4 этот масштабный коэффициент был равен , предположительно равным 1.0, но в iOS 4 и позже это может быть либо 1.0, либо 2.0, в зависимости от разрешения базового устройства . В будущем могут быть и другими масштабными факторами: .

+0

Я получаю масштаб всего tme как 0 в симуляторе .. любые комментарии? –