CGRect和NSRect之间有什么区别吗?

时间:2010-01-27 23:09:49

标签: objective-c cocoa cocoa-touch

CGRectNSRect之间有什么区别吗?特别是,我想知道原点的位置。我需要了解哪些重要差异?

2 个答案:

答案 0 :(得分:19)

他们是一样的。 This link有更多信息。复制到此处以供快速参考:

  

CGRect是与NSRect等效的CoreGraphics。

     

故意使它们在内存中具有相同的布局。因此,可以通过以下方式将NSRect转换为CGRect

CGRect cgrect = *(CGRect *)&nsrect;
     

CoreGraphics还提供CGRectMake()函数,其作用与NSMakeRect()相同(注意名称中动词和对象的反转),但它返回CGRect

答案 1 :(得分:4)

  

特别是,我想知道原点的位置。

这取决于你得到矩形的位置以及你在哪里使用它。一般来说,Core Graphics和UIKit使用翻转坐标(原点左上角,正y下降),而AppKit使用未折叠的坐标(原点左下,正y上升)。但是可以从每个API中翻转或解开坐标,而某些类(如NSImage和NSView)可以很容易地实现这一点。