Есть ли разница между 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, делают это очень легко.