Разместить объект в местоположении пикселя сетчатки, к которому стандартное разрешение не может получить доступ?

Я анимация что-то положение на экране в xcode.

В настоящее время он перемещается на пиксель "1" каждые 0,1 секунды.

Это означает, что он не перемещается на 1 пиксель каждые 0,1 секунды на экране сетчатки, а на 2 пикселя каждые 0,1 секунды.

Я хочу, чтобы он двигался с истинным 1 пикселем каждые 0,1 секунды на экране сетчатки. Есть какой-либо способ сделать это?

Любой способ установить местоположение объекта как место сетчатки или что-то еще?

2 ответа

Вы хотите перемещаться в пикселях. Все координаты в iOS указаны в точках. Поэтому вам нужно преобразовать точки в пиксели. Это можно сделать, выполнив следующие действия:

CGFloat screenScale = [UIScreen mainScreen].scale;
CGFloat ratio = 1.0 / screenScale;

Используйте ratio для увеличения анимации.

На устройстве без сетчатки ratio будет 1 балл. На текущих сетчатых устройствах ratio будет составлять 0.5 балла.

Когда вы живите, переместите координаты x и y по точкам ratio и каждый раз вы получите один пиксель движения.


Начиная с iOS 4, размеры измеряются в "точках" вместо пикселей. В экранах, не связанных с сеткой, точка - один пиксель, а в сетчатых сетях точка - два пикселя, нарисовать линию с одной точкой и отображать ширину в два пикселя.

Поэтому, когда на экранах Retina вы можете перемещать 0.5 пункта (что равно 1 пикселю).

Посмотрите на концепции рисования Apple.

licensed under cc by-sa 3.0 with attribution.