我的自定义UIView draw(_ rect: CGRect)
函数中有一个UIBezierPath
。我想用渐变色填充路径。请任何人指导我如何做。
我需要用渐变色填充剪辑,然后用黑色笔划路径。
在SO中有一些帖子并没有解决这个问题。例如Swift: Gradient along a bezier path (using CALayers),这篇帖子指导如何在UIView
中的层上绘图,而不是在UIBezierPath
中绘图。
注意:我正在处理Swift-3
我的自定义UIView draw(_ rect: CGRect)
函数中有一个UIBezierPath
。我想用渐变色填充路径。请任何人指导我如何做。
我需要用渐变色填充剪辑,然后用黑色笔划路径。
在SO中有一些帖子并没有解决这个问题。例如Swift: Gradient along a bezier path (using CALayers),这篇帖子指导如何在UIView
中的层上绘图,而不是在UIBezierPath
中绘图。
注意:我正在处理Swift-3
4条答案
按热度按时间j2qf4p5b1#
为了回答你的问题
我在自定义UIView绘图中有一个UIBezierPath(_ rect:CGRect)函数。我想用渐变颜色填充路径。
假设有一条椭圆形路径,
要创建渐变,
我们需要一个渐变的遮罩层,
现在,将此
shapeLayer
设置为gradient
图层的mask
,并将其添加到view
的图层,即subLayer
更新创建一个基本层与笔触和添加之前创建渐变层。
hs1ihplo2#
您可以直接在Core Graphics中执行此操作,而无需使用
CALayer
类。使用bezierPath.addClip()
将贝塞尔曲线路径设置为剪辑区域。任何后续的绘图命令都将被屏蔽到该区域。我在我的一个项目中使用了这个 Package 函数:
webghufk3#
这里的其他答案似乎不起作用(至少在较新的iOS版本?)
下面是一个正在创建的贝塞尔曲线路径的工作示例,笔划是渐变笔划,根据需要调整CGPoints和CGColors:
nkhmeac64#
@AlbertRenshaw(ObjC)答案的Swift 5版本,并 Package 在一个UIView类中。它显示的东西看起来是球形的,但在它的侧面。可以应用CGAffineTransform将它旋转90 °以获得很酷的效果。
导入UIKit
在UIViewController中的用法: