首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带渐变的CoreGraphice描边文本

带渐变的CoreGraphice描边文本
EN

Stack Overflow用户
提问于 2021-02-27 05:45:17
回答 1查看 35关注 0票数 0

CGContextSetTextDrawingMode的帮助下,我们能够绘制加边框的文本。如何用画笔(渐变/图片)而不是纯色来填充边框?

在Apple Docs上找不到这个。

EN

回答 1

Stack Overflow用户

发布于 2021-03-18 10:36:56

依次使用context.clip(to: pathFrame)context.addPath(path)

  • 执行操作

然后,您可以使用context.drawLinearGradient

  • 为了画图没有副作用,

记住使用context.saveGState()context.restoreGState()

以下是iOS版本示例,

您应该将其编辑为MacOS版本

代码语言:javascript
复制
class CustomV: UIView{
     override func draw(_ rect: CGRect) {
       
        // Create a gradient from white to red
        let colors: [CGFloat] = [
            1.0, 1.0, 1.0, 1.0,
            1.0, 0.0, 0.0, 1.0]
        let baseSpace = CGColorSpaceCreateDeviceRGB()
        guard let context = UIGraphicsGetCurrentContext(), let gradient =
                CGGradient(colorSpace: baseSpace, colorComponents: colors, locations: nil, count: 2) else{ return }
        
        context.saveGState()
        let offset: CGFloat = 10
        let startPoint = CGPoint(x: rect.maxX - offset, y: rect.minY)
        let endPoint = CGPoint(x: rect.maxX - offset, y: rect.maxY)
        let p = CGMutablePath()
        p.move(to: startPoint)
        p.addLine(to: endPoint)
        context.addPath(p)
        context.clip(to: CGRect(origin: startPoint, size: CGSize(width: 3, height: 800)))
        context.setLineWidth(offset)
        
        context.drawLinearGradient(gradient, start: startPoint, end: endPoint, options: [])
        context.restoreGState()

    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66393173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档