Есть ли разница между CGRect и NSRect? - PullRequest
23 голосов
/ 28 января 2010

Есть ли разница между CGRect и NSRect? В частности, меня интересует положение происхождения. Есть ли какие-то важные различия, о которых мне нужно знать?

Ответы [ 2 ]

19 голосов
/ 28 января 2010

Они одинаковые. Эта ссылка содержит больше информации. Скопировано здесь для быстрого ознакомления:

CGRect является эквивалентом CoreGraphics NSRect.

Они специально созданы для одинакового расположения в памяти. Таким образом, можно преобразовать NSRect в CGRect, выполнив это:

CGRect cgrect = *(CGRect *)&nsrect;

CoreGraphics также предоставляет функцию CGRectMake(), которая работает так же, как NSMakeRect() (обратите внимание на обращение глагола и объекта в именах), за исключением того, что возвращает CGRect.

4 голосов
/ 28 января 2010

В частности, меня интересует положение происхождения.

Это зависит от того, где вы получили прямоугольник и где вы его используете. Как правило, Core Graphics и UIKit используют перевернутые координаты (начало координат слева вверху, положительный y идет вниз), в то время как AppKit использует непересекающиеся координаты (начало координат слева вниз, положительный y идет вверх). Но можно перевернуть или отменить координаты каждого API, и некоторые классы, такие как NSImage и NSView, делают это очень простым.

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