Как я расширяю в этот ответ система координат Quartz 2D использует левый нижний угол как (0,0), что совпадает с системой координат окна на Mac. iPhone использует верхний левый угол как (0,0) для своего макета представления, поэтому слои, которые поддерживают UIViews, имеют свою систему координат, перевернутую вокруг оси Y.
Если вы используете расширения NSString UIKit для рисования текста на подложке для UIView, он будет ориентирован правильно, потому что это переворачивание принимается во внимание. Однако, если вы используете рисунок текста Quartz более низкого уровня, вам нужно будет сначала перевернуть систему координат относительно оси Y (так, чтобы 0,0 снова был нижним левым), чтобы правильно сориентировать вещи.
Обычные контексты Core Graphics (используемые для рисования изображений или PDF-файлов для хранения или отображения) не инвертируются, поэтому верно обратное. Обычный текст Quartz будет отображаться нормально, но для объектов, нарисованных с использованием расширений NSString UIKit, необходимо сначала инвертировать систему координат. Это вызывает много путаницы у разработчиков, чьи изображения и текст выглядят правильно при выводе на экран, но оказываются перевернутыми при сохранении на диск.
Для чего это было сделано, остается только гадать. Обе системы координат имеют свои преимущества при определенных обстоятельствах. Хотя исправить это несложно.
person
Brad Larson
schedule
15.08.2010