【发布时间】:2015-03-14 23:17:57
【问题描述】:
我的 CGContext 有一个路径和一个线宽,这在我的UIView 中绘制了一个漂亮的黑色轮廓。伟大的。现在我正在尝试为这个笔画上色,虽然CGContextSetStrokeColorWithColor 方法还不错,但我想要更鲜艳的颜色,所以决定使用渐变。
问题是 iOS 中没有 CGContextSetStrokeColorWithGradient 方法或(我可以看到)任何类似的方法。所以我想我必须能够绘制一个渐变,该渐变被剪裁到我绘制的笔划上。
为此,我已将渐变绘制到UIView,现在UIView 具有填充视图的渐变背景。
所以现在我有一个黑色的描边和我的渐变。伟大的。但是如何将一个剪辑到另一个?所以看起来我的笔画有渐变的颜色?
我在创建描边和渐变之间调用了CGContextClip,但这不会将渐变剪裁到描边,它只是将渐变剪裁到路径的填充。我唯一想将渐变剪裁到的就是笔划。
有什么想法吗?
这是我的drawRect:
let context = UIGraphicsGetCurrentContext()
let colourSpace = CGColorSpaceCreateDeviceRGB()
let path = CGPathCreateMutableCopy(path())
CGContextSetLineWidth(context, myLineWidth)
CGContextSetLineCap(context, kCGLineCapRound)
CGContextAddPath(context, path)
CGContextClip(context)
CGContextStrokePath(context)
let gradient = CGGradientCreateWithColors(colourSpace,
[startColour.CGColor, endColour.CGColor],
[0.0, 1.0])
CGContextDrawLinearGradient(context,
gradient,
CGPoint.zeroPoint,
CGPoint(x: 0, y: bounds.height),
CGGradientDrawingOptions.allZeros)
【问题讨论】:
标签: ios swift core-graphics