Cocoa 使用initWithColorsAndLocations创建的NSGradient:不绘制

Cocoa 使用initWithColorsAndLocations创建的NSGradient:不绘制,cocoa,core-graphics,nsimage,Cocoa,Core Graphics,Nsimage,我创建了这样的渐变: NSGradient *g = [[NSGradient alloc] initWithColorsAndLocations: [NSColor colorWithWhite:1 alpha:1], 0, [NSColor colorWithWhite:0 alpha:0], 1, nil]; 但当我使用drawInRect:angle:将其绘制到图像中时,我得到的是一个纯白色图像,而不是渐变。怎么了?因

我创建了这样的渐变:

NSGradient *g = [[NSGradient alloc] initWithColorsAndLocations:
                 [NSColor colorWithWhite:1 alpha:1], 0,
                 [NSColor colorWithWhite:0 alpha:0], 1, nil];
但当我使用drawInRect:angle:将其绘制到图像中时,我得到的是一个纯白色图像,而不是渐变。怎么了?

因为-initWithColorsAndLocations:是一个可变函数,编译器不知道参数需要超出第一个参数的类型。被调用方要求位置是CGFloat值,但当传递1或0时,它作为int传递,因此它被解释为非常小的浮点值

解决方案是对位置传递CGFloat0.0和CGFloat1.0,而不是0和1