2013-10-05 3 views
0

Способы координат в настоящий момент для касания какао в верхнем левом углу - 0,0. Мне интересно, можно ли «перевернуть» его так, чтобы 0,0 находился в нижнем левом углу?Переверните ось Y?

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

+0

Просьба указать еще один контекст: вы рисуете свой собственный контент с помощью 'CG ...' подпрограмм? Как ротация должна играть в это, или же должна быть рассмотрена вообще? [Этот вопрос может быть уместным] (https://developer.apple.com/library/ios/documentation/GraphicsImaging/Reference/CGAffineTransform/Reference/reference.html), в зависимости от того, что вы делаете. – dasblinkenlight

+0

Я хочу, чтобы это было как в Cocos2d, точка y 0 была внизу, а не в верхней части экрана. И почему вы снизили ставку? ничего не делает – Arbitur

+0

Что заставляет вас думать, что я отклонил ваш вопрос? Я не думаю, что это ясно, но я также не думаю, что это достаточно плохо, чтобы быть подавленным. – dasblinkenlight

ответ

1

Вы задали вопрос о «Какао», но на самом деле у Какао было очень заметное различие между перевернутыми и неустановленными видами в течение длительного времени. В Cocoa вам просто нужно будет override a method. (И «перевернутый» в какао означает способ, которым делает Cocoa Touch. По умолчанию «unflipped» в какао имеет нижнее левое начало.)

Но вы не программируете Какао; вы программируете Cocoa Touch.

Итак, у вас есть контекст, который перевернут, по-видимому, потому что вы получили его из UIKit (CGContexts, которые вы создаете, не пропуская UIKit, не заблокированы), и вам нужно его разблокировать. (. Или у вас есть unflipped контекст и хотите, чтобы перевернуть его)

В любом случае, решение одно и то же:

  1. Перевести вверх/вниз (положительный у) по всей высоте контекста/зрения ,
  2. Увеличьте ось y на -1.

Перевод перемещает начало координат; перевод на всю высоту перемещает начало координат в противоположный угол.

Масштабирование изменяет оси; масштабирование оси y отрицательным 1 переворачивает его в противоположном направлении, так что теперь вверх и наоборот.

Вот как вы переворачиваете (или переворачиваете) контекст из верхнего левого источника в нижний левый или наоборот.

Вещи, которые не будут работать или иным образом не должны быть судимы:

  • Установка geometryFlipped на слое. Это влияет на подслоев, но не на пользовательский рисунок. (Конечно, если весь ваш «рисунок» представляет собой слои формы и текстовые слои и простые слои, вы можете просто установить это свойство и не беспокоиться о преобразованиях.)
  • Переопределение contentsAreFlipped в подклассе CALayer. В документации говорится, что этого не делать.
  • Установка вида или его слоя transform. В документации указано, что координатное пространство, к которому применяется transform, имеет начало координат в центре (или anchorPoint), а не в углу. Это заманчиво, но я ожидаю, что веселье начнется.
Смежные вопросы