iOS在不使用CAGradientLayer的情况下,用其他颜色填充UIBezierPath的一半

问题描述 投票:0回答:1

我对绘制UIBezierPath的一半有疑问。如何在不使用CAGradientLayer的情况下用绿色填充左手部分(拇指左),用白色填充右手部分(拇指右)?

我用来创建贝塞尔曲线的代码-https://gist.github.com/robertmryan/67484c74297cede3926a3aed2fceedb9

我想要实现的屏幕截图:

enter image description here

swift uiscrollview slider uibezierpath curve
1个回答
0
投票

一种方法是将遮罩层添加到弯曲路径形状层。

当“拇指”位置改变时,更改遮罩的宽度以仅显示形状层的“左侧”。

创建形状图层以用作遮罩:

let maskLayer: CALayer = {
    let layer = CALayer()
    layer.backgroundColor = UIColor.black.cgColor
    return layer
}()

viewDidLoad()中,将该层设置为弯曲层的蒙版:

pathLayer.mask = maskLayer

无论何时设置“拇指”位置,都应更新遮罩的宽度:

func updateMask(at point: CGPoint) -> Void {
    var f = view.bounds
    f.size.width = point.x
    CATransaction.begin()
    CATransaction.setDisableActions(true)
    maskLayer.frame = f
    CATransaction.commit()
}

我在https://gist.github.com/DonMag/a2154e70a3c67193a7b19bee41c8fe95张贴了您的要点的修改版本>

它实际上只有几处更改...寻找以// DonMag -开头的评论>

© www.soinside.com 2019 - 2024. All rights reserved.