2015-08-08 21 views
1

我得到这个错误。在我的视图控制器:为什么CABasicAnimation尝试初始化我的自定义CALayer的另一个实例?使用下面的代码</p> <blockquote> <p>fatal error: use of unimplemented initializer 'init(layer:)' for class 'MyProject.AccordionLayer'</p> </blockquote> <p>:

override func viewDidLoad() { 
    let view = self.view as! AccordionView! 
    view.launchInitializationAnimations() 
} 

笔者认为:

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

var topX : Int 
init(accordion: (color: CGColorRef!, header: String, subtitle: String, image: UIImage?)!) { 

    // Some initializations 
    // ... 

    super.init() 
} 

我也实现了needsDisplayForKeydrawInContext

我已经看到了2-3个其他问题,但我无法真正弄清楚它是如何与我自己的特定案例相关的。

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

+0

哪一行会引发错误? –

+0

Xcode标记'class AccordionLayer:CALayer {',消息为“线程1:EXC_BAD_INSTRUCTION”。它会在调用'layer.addAnimation(animation,forKey:“animateTopX”)'时立即发生。看起来像'CA :: Layer :: layer_at_time(CA :: Transaction *,double,bool,bool)'会引发错误。 – Tobias

+0

您没有发布该代码。如果你想在某一特定行发生崩溃,这将有助于你发布崩溃的实际代码。 –

回答

2

我只是碰到了同样的问题,我把它添加到init(layer:)我的自定义CALayer后工作:

override init(layer: AnyObject) { 
    super.init(layer: layer) 
} 

我希望它能帮助任何人来到这里。

+0

在正文中,您还必须手动初始化自定义类中的每个属性。我想出了这个问题:http://stackoverflow.com/questions/38468515/cabasicanimation-creates-empty-default-value-copy-of-calayer/38468678#38468678 –

相关问题