Cocoa CGColorRef不兼容的指针类型将float [4]'传递给'const CGFloat *'类型的参数(又名'const double *')

时间:2014-02-03 15:33:28

标签: cocoa cgfloat

我收到错误:

my color = CGColorCreate(colorSpace, fillComponents); variable: incompatible pointer types passing 'float [4]' to parameter of type 'const CGFloat *' (aka 'const double *'). 

我该如何解决这个问题?

CGColorRef color;

//retrieve some usefull rects
NSRect frame = [self frame];
NSRect imageFrame = [self imageFrame];
NSRect relativeImageFrame = NSMakeRect(imageFrame.origin.x - frame.origin.x, imageFrame.origin.y - frame.origin.y, imageFrame.size.width, imageFrame.size.height);

/* place holder layer */
if(type == IKImageBrowserCellPlaceHolderLayer){
    //create a place holder layer
    CALayer *layer = [CALayer layer];
    layer.frame = CGRectMake(0, 0, frame.size.width, frame.size.height);

    CALayer *placeHolderLayer = [CALayer layer];
    placeHolderLayer.frame = *(CGRect*) &relativeImageFrame;

    float fillComponents[4] = {1.0, 1.0, 1.0, 0.3};
    float strokeComponents[4] = {1.0, 1.0, 1.0, 0.9};
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();

    //set a background color
    color = CGColorCreate(colorSpace, fillComponents);
    [placeHolderLayer setBackgroundColor:color];
    CFRelease(color);

    //set a stroke color
    color = CGColorCreate(colorSpace, strokeComponents);
    [placeHolderLayer setBorderColor:color];
    CFRelease(color);

    [placeHolderLayer setBorderWidth:2.0];
    [placeHolderLayer setCornerRadius:0];
    CFRelease(colorSpace);

    [layer addSublayer:placeHolderLayer];

    return layer;
}

1 个答案:

答案 0 :(得分:1)

如果您定义填充/描边组件,如错误消息所示,它应该起作用:

const CGFloat *components = {1.0, 1.0, 1.0, 0.3};