【问题标题】:Why does this composite gradient look bad on iOS?为什么这种复合渐变在 iOS 上看起来很糟糕?
【发布时间】:2015-09-10 18:04:47
【问题描述】:

当我在 iOS 中使用 Quartz 合成透明线性和径向渐变时,结果看起来不像我预期的那样。屏幕截图显示了左侧的 iOS 版本和右侧的 Java 测试。有趣的是,如果我在 OS X 上使用 Core Graphics 绘制渐变,它们看起来很好(就像 Java 一样)。

我想知道我是否缺少使这项工作所需的某些渲染选项或混合模式,或者这是否是 iOS 的限制。

绘图是这样完成的:

let linearPaint = CGGradientCreateWithColors( CGColorSpaceCreateDeviceRGB(),
    [darkColor.CGColor, lightColor.CGColor], [0, 1])
CGContextSetAlpha(g, 0.3)
CGContextDrawLinearGradient(g, linearPaint, CGPointMake(x,y), CGPointMake(x,y+h), CGGradientDrawingOptions(rawValue: 0))

let radialPaint = CGGradientCreateWithColors( CGColorSpaceCreateDeviceRGB(),
    [color.CGColor, lightColorTrans.CGColor], [0, 1])
CGContextSetAlpha(g, 0.4)
CGContextDrawRadialGradient(g, radialPaint, center, 0, center, rad, CGGradientDrawingOptions(rawValue: 0))

【问题讨论】:

  • 您是否尝试在调用 CGContextDrawRadialGradient 时使用 kCGGradientDrawsAfterEndLocation 或 kCGGradientDrawsBeforeStartLocation 选项

标签: ios core-graphics gradient quartz-graphics


【解决方案1】:

正如 Glenn Howes 在他的回复中指出的那样,kCGGradientDrawsAfterEndLocation 似乎可以缓解或解决此问题。但是,鉴于径向渐变在末端半径处的透明度应该为零,我仍然不确定为什么这很重要。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-08
    • 1970-01-01
    • 2020-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多