首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么CABasicAnimation试图初始化我的自定义CALayer的另一个实例?

为什么CABasicAnimation试图初始化我的自定义CALayer的另一个实例?
EN

Stack Overflow用户
提问于 2015-08-08 12:10:22
回答 2查看 2K关注 0票数 8

我知道这个错误:

致命错误:类'MyProject.AccordionLayer‘使用未实现的初始化器’init(层:)‘

使用以下代码。在我看来,控制器:

代码语言:javascript
复制
override func viewDidLoad() {
    let view = self.view as! AccordionView!
    view.launchInitializationAnimations()
}

我认为:

代码语言:javascript
复制
required init(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)

    for var i = 0; i < self.accordions.count; ++i {
        var layer = AccordionLayer(accordion: self.accordions[i])
        layer.accordion = self.accordions[i]
        layer.frame = CGRectMake(0, CGFloat(i) * self.getDefaultHeight(), self.frame.width, self.getDefaultHeight())
        self.layer.addSublayer(layer)
        layer.setNeedsDisplay()
        layers.append(layer)
    }
}

func launchInitializationAnimations() {
    for layer in self.layer.sublayers {
        var animation = CABasicAnimation(keyPath: "topX")
        animation.duration = 2.0
        animation.fromValue = CGFloat(0.0)
        animation.toValue = CGFloat(200.0)
        layer.addAnimation(animation, forKey: "animateTopX")
    }
}

在我的子类CALayer中

代码语言:javascript
复制
var topX : Int
init(accordion: (color: CGColorRef!, header: String, subtitle: String, image: UIImage?)!) {

    // Some initializations
    // ...

    super.init()
}

我还实现了needsDisplayForKeydrawInContext

我已经看到了2-3个带有相同错误信息的问题,但我无法真正弄清楚这与我自己的具体情况有什么关系。

为什么CABasicAnimation试图实例化一个新的(我的自定义) CALayer?

EN

回答 2

Stack Overflow用户

发布于 2016-03-15 17:05:45

我刚刚遇到了同样的问题,在将init(layer:)添加到我的自定义CALayer之后,它就开始工作了。

代码语言:javascript
复制
override init(layer: Any) {
    super.init(layer: layer)
}

我希望它能帮助到这里的人。

编辑作为Ben注释,在重写中还必须从自定义类中复制属性值。例如,请参见他的https://stackoverflow.com/a/38468678/341994

票数 10
EN

Stack Overflow用户

发布于 2019-01-15 20:57:52

为什么CABasicAnimation试图实例化一个新的(我的自定义) CALayer?

因为动画需要制作一个图层的副本作为表示层。

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

https://stackoverflow.com/questions/31892986

复制
相关文章

相似问题

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