ios - 将颜色定义为 CGFloat

标签 ios objective-c uicolor

我正在使用在另一个 stackoverflow post 中找到的以下代码创建渐变关于在 iOS 中绘制径向渐变

- (void)drawInContext:(CGContextRef)ctx
{ 
    if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"theme"] isEqualToString:@"black"]) {

    }

    size_t gradLocationsNum = 2;
    CGFloat gradLocations[2] = {0.0f, 1.0f};
    CGFloat gradColors[8] = {156/255.0f, 97/255.0f, 249/255.0f,1.0f,41/255.0f,131/255.0f,242/255.0f,1.0f};
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
    CGGradientRef gradient = CGGradientCreateWithColorComponents(colorSpace, gradColors, gradLocations, gradLocationsNum);
    CGColorSpaceRelease(colorSpace);

    CGPoint gradCenter= CGPointMake(self.bounds.size.width/2, self.bounds.size.height+100);
    float gradRadius = MAX(self.bounds.size.width , self.bounds.size.height) ;

    CGContextDrawRadialGradient(ctx, gradient, gradCenter, 0, gradCenter, gradRadius, kCGGradientDrawsAfterEndLocation);


    CGGradientRelease(gradient);
}

我不知道如何定义CGFloat gradColors[8] = {156/255.0f, 97/255.0f, 249/255.0f,1.0f,41/255.0f,131/255.0f,242/255.0f,1.0f}; 这样我就可以做类似的事情:

CGFloat gradColors[8];

if ...
    gradColors[8] = {156/255.0f, 97/255.0f, 249/255.0f,1.0f,41/255.0f,131/255.0f,242/255.0f,1.0f};
else if ...
    gradColors[8] = {156/255.0f, 97/255.0f, 249/255.0f,1.0f,41/255.0f,131/255.0f,242/255.0f,1.0f};

另外:有没有办法将 UIColor 转换为这种格式?

最佳答案

您可以尝试使用接受 CGColor 数组的 CGGradientCreateWithColors()

例如。

CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, (__bridge CFArrayRef)@[(id)aUIColor1.CGColor, (id)aUIColor2.CGColor], gradientLocations);

关于ios - 将颜色定义为 CGFloat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36456852/

相关文章:

iphone - 使用核心数据更新实体发送消息到解除分配的实例

ios - 获取具有 alpha 值的纯色版本,同时考虑下面的颜色

iphone - 在 xcode 4.2 中添加新目标

ios - OpenGL ES 2.0 渲染到多个纹理

ios - 在 ios 通用设备上构建失败,但在模拟器上构建正常

ios - 隐藏分段索引上的搜索栏为 1

ios - 由于多线程代码导致内存压力而终止

ios - 在 SwiftUI 中切换 View 后 Firebase 图像为空

ios - 如何使用多个变量一起自定义具有不同字体大小和颜色的 UILabel

ios - 在 Swift 中比较 UIColors 的问题