【问题标题】:Change stroke Color to Clear Color CGContext将描边颜色更改为清除颜色 CGContext
【发布时间】:2020-06-01 21:25:51
【问题描述】:

我希望用户在自定义 UIView 上使用 clearcolor 作为描边颜色。该代码适用于其他颜色但不是清晰的颜色。

 override func draw(_ rect: CGRect) {
    guard let context = UIGraphicsGetCurrentContext() else { return }
    context.addRect(rect)
    draw(inContext: context)
}

func draw(inContext context: CGContext) {

    context.setLineWidth(5)
    context.setStrokeColor(UIColor.clear.cgColor)
    context.setLineCap(.round)

    for line in lineArray {
        guard let firstPoint = line.first else { continue }
        context.beginPath()
        context.move(to: firstPoint)
        for point in line.dropFirst() {
            context.addLine(to: point)
        }
        context.strokePath()
    }
}

【问题讨论】:

  • 不工作是什么意思?你希望/期待什么结果?在我看来,您的代码非常适合以清晰的颜色绘制。我看到它做的正是我认为它应该做的。你呢?
  • 我有一个图像视图和它上面的一个视图,即这个自定义视图。当用户在自定义 view.stroke 上绘制时,颜色应该是清晰的。视图和图像视图应该是可见的。我无法用上面的代码做到这一点
  • 我听不懂那些话。你能画出你的期望吗?
  • 我已经更新了我的问题。我想要清晰的颜色而不是黑线,这样我就可以看到它下面的图像视图。 (imageview 已经在它下面了。)
  • 用清晰的颜色绘图不会让任何人“看到”任何东西。恰恰相反:很明显,这意味着不可见。同样,不清楚您的期望。听起来您认为您想将前视图用作 隐藏 图像视图的 mask,并且希望在用户绘制的任何位置显示它。真的吗?如果是这样,这似乎不是你在做什么。

标签: ios swift core-graphics cgcontext


【解决方案1】:

所以,听起来你有这样的情况。你有一个图像显示在图像视图中:

并且您希望图像被隐藏,直到用户在其上绘图,此时用户的绘图应该显示图像的该部分,像这样:

如果是这样,你想要的不是用清晰的颜色绘制;你想要一个面具。在第二个屏幕截图中实际发生的是,我们跟踪用户的绘图并将 black 绘制到图像视图上原本清晰的 mask 中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-26
    • 1970-01-01
    • 2021-05-23
    • 2011-10-19
    • 2020-01-01
    • 2013-04-05
    • 1970-01-01
    • 2022-11-04
    相关资源
    最近更新 更多