Vraag Is er een verschil tussen een CGRect en een NSRect?


Is er een verschil tussen een CGRect en een NSRect? In het bijzonder vraag ik me af over de positie van de oorsprong. Zijn er belangrijke verschillen die ik moet kennen?


22
2018-01-27 23:09


oorsprong


antwoorden:


Ze zijn hetzelfde. Deze link heeft meer informatie. Hier gekopieerd voor een snelle referentie:

CGRect is het CoreGraphics-equivalent van NSRect.

Ze zijn bewust gemaakt met dezelfde lay-out in het geheugen. Als zodanig is het toegestaan ​​om een ​​te converteren NSRect naar een CGRect door dit te doen:

CGRect cgrect = *(CGRect *)&nsrect;

CoreGraphics biedt ook een CGRectMake() functie die hetzelfde werkt als NSMakeRect() (let op de omkering van werkwoord en object in de namen) behalve dat het a retourneert CGRect.


19
2018-01-27 23:16



In het bijzonder vraag ik me af over de positie van de oorsprong.

Dat hangt er vanaf waar je de rect hebt en waar je het gebruikt. In het algemeen gebruiken Core Graphics en UIKit omgedraaide coördinaten (oorsprong links boven, positief y naar beneden), terwijl AppKit niet-geflipte coördinaten gebruikt (oorsprong linksonder, positief en hoger). Maar het is mogelijk om coördinaten van elke API om te draaien of te ontgrendelen, en sommige klassen, zoals NSImage en NSView, maken het heel gemakkelijk om dat te doen.


4
2018-01-28 01:55