Cocoa CGColorRef 不兼容的指针类型传递 float [4 ]' to parameter of type ' const CGFloat *' (aka ' const double *')

标签 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;
}

最佳答案

如果您按照错误消息的建议定义填充/描边组件,它应该可以工作:

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

关于Cocoa CGColorRef 不兼容的指针类型传递 float [4 ]' to parameter of type ' const CGFloat *' (aka ' const double *'),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21531314/

相关文章:

ios - 不兼容的 block 指针类型使用类型为'double(^)(CGFloat)'的表达式初始化'CGFloat(^ __ strong)(CGFloat)'

objective-c - 获取 NSTimer 目标的返回值

cocoa - NSTableView 标题样式

objective-c - 自动调整以编程方式创建的 subview 的大小

ios - 将 Int 转换为 CGFloat 结果为 0.000000

ios - 替换 `fabs` 、 `fmax` 等,用于 64 位 iOS 设备上的 CGFloat

cocoa - 如何编写核心数据谓词来过滤特定的子实体类型?

objective-c - 网页 View : Blocked a frame with origin www. youtube.com

ios - 使用 CGFloat 和 "memory footprint"

Swift:检查 NSArray 中的哪个值最接近另一个给定值