如何将NSRect更改为CGRect?

kev*_*in 3 macos cocoa

-(void)drawRect : (NSRect)rect 
{    
        imgRect.orgin = NSZeroPoint;

        imgRect.size = [appleImage size];

        drawRect = [self bounds];

        [appleRect drawInRect:appleRect     
                     fromRect:imgRect     
                     operation:NSCompositeSourceOver     
                     fraction:1.0];
        ...     
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试这个,但这并不容易,让我发疯.

如何将NSRect类型代码更改为CGRect类型代码?

请帮助!

PS.我已经知道.. NSRect - > CGRect,NSZeroPoint - > CGRectZero

IlD*_*Dan 17

只需使用这2个Cocoa(无iOS)功能:

CGRect NSRectToCGRect(NSRect nsrect);
NSRect NSRectFromCGRect(CGRect cgrect);
Run Code Online (Sandbox Code Playgroud)

看看这里加深话题:http://cocoadev.com/CGRect


Hol*_*lly 5

如果您在iOS中遇到这种情况(例如with)UIKeyboardFrameEndUserInfoKey,请务必知道它NSRect是的子类,这一点很重要NSValue

if let rectValue = notification.userInfo?[UIKeyboardFrameEndUserInfoKey] as? NSValue {
    let rect = rectValue.CGRectValue()
    // Use your CGRect
}
Run Code Online (Sandbox Code Playgroud)