首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从画布中获取CAEmitterLayer

如何从画布中获取CAEmitterLayer
EN

Stack Overflow用户
提问于 2013-12-06 22:47:52
回答 1查看 84关注 0票数 1

我试图在这里学习关于iOS粒子系统的教程:http://www.raywenderlich.com/6063/uikit-particle-systems-in-ios-5-tutorial

我很难将C4Workspace.m中的self.canvas.layer转换为CAEmitterLayer。代码编译得很好,但在运行时失败了。

我试过这个:

代码语言:javascript
复制
    particlesystem = (CAEmitterLayer *)self.canvas.layer;

但我每次都会收到这个错误。

代码语言:javascript
复制
-[C4Layer setEmitterPosition:]: unrecognized selector sent to instance 0xa183830

我似乎没有正确地铸造或暴露方法。我该怎么做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-06 23:01:14

您不能简单地将一个层转换为另一个层。为了使视图具有非标准层,需要对其进行子类并定义+layerClass方法:

代码语言:javascript
复制
@implementation MyViewSubclass

+ (Class)layerClass {
    return [CAEmitterLayer class];
}

...

不幸的是,您正在使用的视图已经设置了一个自定义层, which can be seen on GitHub。这一层做了很多事情,你不想尝试替换它。

您可以做的是将您自己的子层插入到您的画布中:

代码语言:javascript
复制
CAEmitterLayer *myLayer = [CAEmitterLayer layer];
myLayer.frame = self.canvas.bounds;
[self.canvas.layer addSublayer:myLayer];

这个发射器层现在将覆盖你的图层,你可以添加任何你想要的效果。如果您希望发射器低于其他层,您可以使用insertSublayer:myLayer atIndex:0

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

https://stackoverflow.com/questions/20434959

复制
相关文章

相似问题

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