Mar*_*ski 0 objective-c calayer ios swift
我正在学习如何使用CALayers并对其属性执行动画.对于初学者来说,Apple的文档简直含糊不清.我设法在iOS的文档中找到一个示例(称为:CustomAnimatableProperty),它在某种程度上"解释"了如何做我想要的事情:
// For CALayer subclasses, always support initWithLayer: by copying over custom properties.
-(id)initWithLayer:(id)layer {
if( ( self = [super initWithLayer:layer] ) ) {
if ([layer isKindOfClass:[BulbLayer class]]) {
self.brightness = ((BulbLayer*)layer).brightness;
}
}
return self;
}
Run Code Online (Sandbox Code Playgroud)
将方法覆盖转换为Swift会给我一些错误:

这些错误源于我对这里发生的事情缺乏了解.我不确定我们在那些嵌套的if语句中检查了什么.另外,我对主if(){}块中"="的使用感到有些困惑.我们不应该检查("==")是否平等?
但是,任何一般的帮助都意味着世界.我已经尝试在线查看一些博客文章/教程,但是没有一篇涉及这个特定的问题.
这个self = [super init...]成语是针对Objective-C而不是Swift.在Swift中,init块不是正常的函数,也不返回任何内容.
当我们在这里时,让我们使用Swift成语进行向下转换.我们还需要保证size在我们打电话之前初始化super.init.
override init(layer: AnyObject!) {
if let layer = layer as? SegmentActiveLayer {
size = layer.size
} else {
size = 0
}
super.init(layer: layer)
}
Run Code Online (Sandbox Code Playgroud)