带角度的 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的主要内容,如果未能解决你的问题,请参考以下文章

带角度插值的内联 CSS

带参数的角度 10 路由和导航错误

text 带角度的Firebase身份验证

html 带查询参数的角度超链接

html 带参数的角度链接

如何使用带角度的复选框过滤对象数组?