gpt4 book ai didi

ios - 如何用倾斜的渐变填充 CAShapeLayer

转载 作者:IT王子 更新时间:2023-10-29 05:18:21 25 4
gpt4 key购买 nike

如何用渐变和 45 度角填充 CAShapeLayer()

例如,在图片 1 中,下面的代码绘制了一个正方形并用蓝色填充图层 (UIColor.blueColor().CGColor)。

但是,我如何用从蓝色到红色的 45 度角的渐变填充它,就像在 Image 2 中一样(即 UIColor.blueColor().CGColorUIColor.redColor().CGColor)?

代码:

let path = UIBezierPath()
path.moveToPoint(CGPoint(x: 0, y: 0))
path.addLineToPoint(CGPoint(x: 0, y: 100))
path.addLineToPoint(CGPoint(x: 100, y: 100))
path.addLineToPoint(CGPoint(x: 100, y: 0))
path.closePath()

let shape = CAShapeLayer()
shape.path = path.CGPath
shape.fillColor = UIColor.blueColor().CGColor

Solid-color square next to square with gradient

最佳答案

为什么不使用具有 startPointendPoint 属性的 CAGradientLayer

你可以这样做:

import UIKit
import PlaygroundSupport

let frame = CGRect(x: 0, y: 0, width: 100, height: 100)
let view = UIView(frame: frame)

PlaygroundPage.current.liveView = view

let path = UIBezierPath(ovalIn: frame)

let shape = CAShapeLayer()
shape.frame = frame
shape.path = path.cgPath
shape.fillColor = UIColor.blue.cgColor

let gradient = CAGradientLayer()
gradient.frame = frame
gradient.colors = [UIColor.blue.cgColor,
UIColor.red.cgColor]
gradient.startPoint = CGPoint(x: 0, y: 1)
gradient.endPoint = CGPoint(x: 1, y: 0)
gradient.mask = shape

view.layer.addSublayer(gradient)

enter image description here

注意:为圆形添加了贝塞尔曲线路径,因为它可以在没有正方形 mask 的情况下工作。

关于ios - 如何用倾斜的渐变填充 CAShapeLayer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41019686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com