带角度的 CAGradientLayer
Posted
技术标签:
【中文标题】带角度的 CAGradientLayer【英文标题】:CAGradientLayer with Angle 【发布时间】:2013-08-26 05:08:05 【问题描述】:我正在绘制不是矩形或正方形的CGPath
,并将CGPath
添加到CAShapeLayer
。这个CAShapeLayer
的框架使用CGPathGetBoundingBox(path)
从CGPath
获取。所以它将是矩形或正方形。现在我想将渐变颜色设置为图层,但我的路径不是矩形或正方形,因此它不会在整个CGPath
上均匀分布渐变颜色。有什么方法可以将渐变颜色设置为 CGPath,或者如何设置带角度的渐变颜色?
请参考屏幕截图以了解情况。这里白色表示CGPath
的框架,绿色表示我们绘制的CGPath
。在CGPath
的底部可以看到在CGPath
中分布不均的白色渐变色。
【问题讨论】:
如果我理解你的问题,这个链接会帮助你***.com/a/422208/1059705 所以你想说我应该使用 location 属性。对吗? 我不确定,试一试.. 这是我的六边形的一部分,如果我把它改成五边形怎么办?我很欣赏你的回答,但它不是更通用。我不能传递静态值... 您能否添加另一张图片来显示您希望看到的内容?我不确定您所说的“均匀分布”是什么意思。 【参考方案1】:线性渐变的起点和终点以相对于整个图层大小的点数指定,左上角为 (0,0),右下角为 (1,1)。
因此,要在某个角度上制作线性渐变,您只需适当地设置起点和终点。例如,如果您使用 (0,0) 和 (1,1) 作为起点和终点,渐变将从左上角到右下角以 45 度角运行。
因此,根据您的需求计算出具体的起点和终点只是三角函数的问题。
【讨论】:
以上是关于带角度的 CAGradientLayer的主要内容,如果未能解决你的问题,请参考以下文章