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