Есть ли разница между CGRect и NSRect?
Есть ли разница между a CGRect
и NSRect
? В частности, мне интересно узнать о происхождении. Есть ли какие-то важные различия, о которых мне нужно знать?
Ответы
Ответ 1
Они одинаковы. Эта ссылка
содержит дополнительную информацию. Скопировано здесь для быстрой справки:
CGRect
- эквивалент Coregraphics NSRect
.
Они намеренно сделаны так же, как и в памяти. Таким образом, разрешено преобразовывать NSRect
в CGRect
, делая следующее:
CGRect cgrect = *(CGRect *)&nsrect;
CoreGraphics также предоставляет функцию CGRectMake()
, которая работает так же, как NSMakeRect()
(обратите внимание на отмену глагола и объекта в именах), за исключением того, что возвращает CGRect
.
Ответ 2
В частности, я задаюсь вопросом о позиции происхождения.
Это зависит от того, где вы получили прямой и где вы его используете. В общем случае Core Graphics и UIKit используют перевернутые координаты (начало слева вверху, положительное у вниз), тогда как AppKit использует unflipped-координаты (начало слева внизу, положительное y растет). Но с каждого API можно перевернуть или отменить координаты, а некоторые классы, такие как NSImage и NSView, делают это очень легко.