我在CAEmitterCell上找不到足够的文档。
它的内容似乎可以设置为任何对象,但据我从在线示例中可以看出,它总是被设置为UIImage。
有没有办法对内容进行其他设置?比如CAShapeLayers或者仅仅是纯色?
发布于 2021-09-28 19:11:22
以下是一种方法,使用转换为图像的路径(此函数创建一个随机的圆形、正方形或三角形):
func getRandomShape() -> UIImage {
let rect = CGRect(x: 0, y: 0, width: 12, height: 12)
let options = [1,2,3]
var path:CGPath? = nil
switch options.randomElement() {
case 1:
path = CGPath(ellipseIn: rect, transform: nil)
case 2:
let cmp = CGMutablePath()
cmp.addLines(between: [
CGPoint(x: rect.midX, y: 0),
CGPoint(x: rect.maxX, y: rect.maxY),
CGPoint(x: rect.minX, y: rect.maxY),
CGPoint(x: rect.midX, y: 0)
])
path = cmp
case 3:
path = CGPath(rect: rect, transform: nil)
default:
path = CGPath(rect: rect, transform: nil)
}
return UIGraphicsImageRenderer(size: rect.size).image { context in
context.cgContext.setFillColor(UIColor.white.cgColor)
context.cgContext.addPath(path!)
context.cgContext.fillPath()
}
}不要忘了获取这个返回的UIImage的.cgImage。例如:getRandomShape().cgImage
https://stackoverflow.com/questions/28980146
复制相似问题