首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不使用图像的CAEmitterCell?

不使用图像的CAEmitterCell?
EN

Stack Overflow用户
提问于 2015-03-11 14:41:34
回答 1查看 446关注 0票数 3

我在CAEmitterCell上找不到足够的文档。

它的内容似乎可以设置为任何对象,但据我从在线示例中可以看出,它总是被设置为UIImage。

有没有办法对内容进行其他设置?比如CAShapeLayers或者仅仅是纯色?

EN

回答 1

Stack Overflow用户

发布于 2021-09-28 19:11:22

以下是一种方法,使用转换为图像的路径(此函数创建一个随机的圆形、正方形或三角形):

代码语言:javascript
复制
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

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

https://stackoverflow.com/questions/28980146

复制
相关文章

相似问题

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