2017-01-04 7 views
0

Согласно documentation for CGRectВ каких контекстах используется координатное пространство на iOS (unflipped) по умолчанию?

В умолчанию Core Graphics координатном пространстве, происхождение находится в нижнем левом углу прямоугольника и прямоугольник простирается в направлении верхнего правого угла. Если в контексте есть поле с координатами с координатами - часто случай в iOS - начало координат находится в верхнем левом углу , а прямоугольник продолжается в направлении нижнего правого угла .

Я всегда принимал его по номинальной стоимости, что система координат на iOS начинается в верхнем левом углу, но после прочтения это имеет смысл, что она перевернута, а не координатное пространство по умолчанию. Вы не думаете о точках на картезианском графе так же, как и в iOS, где добавление к значению Y сдвигается вниз, а не вверх.

В документации говорится, что это «часто бывает», поэтому, когда это не так на iOS? И на каких платформах это координатное пространство, которое используется в Core Graphics?

ответ

2

В iOS и UIKit начало координат находится в левом верхнем углу, а положительные значения y - в нижней части экрана.

Но для API уровня кварца нижнего уровня начало координат находится в левом нижнем углу, а значения y идут вверх в верхней части экрана.

Этот раздел охватывает Quartz 2D Programming Guide под рубрикой Drawing to a View Graphics Context in iOS.

Система координат по умолчанию, используемая по всему UIKit, отличается от системы координат, используемой кварцем. В UIKit начало координат находится в верхнем левом углу, при этом значение положительного-y указывает вниз. Объект UIView модифицирует CTM графического контекста Quartz в соответствии с соглашениями UIKit, переведя начало координат в верхний левый угол представления и инвертируя ось y, умножив его на -1. Для получения дополнительной информации о системах с измененными координатами и о последствиях в вашем собственном чертежном коде см. Quartz 2D Coordinate Systems.

Так что «часто бывает» при использовании UIKit. Это не тот случай, когда используются API-интерфейсы Quartz более низкого уровня.

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

  • Нет связанных вопросов^_^