IOS View Система координат - PullRequest
1 голос
/ 16 июня 2011

Я только что начал программирование рисования iOS и обнаружил, что система координат отличается от Mac OS X, в основном точка происхождения на iOS находится в левом верхнем углу, а не в левом нижнем углу, как на Mac. Просто интересно, кто-нибудь знает, почему Apple сделала это изменение, и изменится ли оно на будущее и для Mac? Я также видел на документах, что система координат на iOS не может быть перевернута, поэтому мне нужно переписать код?

Ответы [ 2 ]

2 голосов
/ 16 июня 2011

Вы правы относительно системы координат. Причина, если я правильно помню, состоит в том, что в системах рисования большинства платформ в качестве начала координат используется верхний левый угол. Mac OS X использовала нижний левый угол, потому что это то, что использовал NeXT.

Вероятно, это не изменится на Mac в будущем, потому что тогда всем придется полностью переписать свой код для рисования.

1 голос
/ 14 мая 2012

Я нашел простой способ исправить это. Вместо использования стандартного объекта CALayer в качестве базового слоя создайте свой собственный класс (на основе CALayer), который имеет один вызов:

- (void)layoutSublayers;
{
    for(sprite* aSprite in self.sublayers)
    {
        // -(y pos -1) flips the coordinate system to start in the lower left
        aSprite.position = CGPointMake(aSprite.actualPosition.x, -(aSprite.actualPosition.y - 1.0));
    }
}

sprite - это просто класс CALayer с добавленным свойством CGPoint, factPosition. Обновите это значение, чтобы переместить спрайт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...