我正在学习如何使用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;
}
将方法覆盖转换为Swift会给我一些错误:
错误源于我对这里发生的事情缺乏了解。我不确定我们在那些嵌套的if语句中检查了什么。我对#34; ="的使用感到有点困惑。在主if(){}块中。我们不应该检查(" ==")是否相等?
但是,任何一般帮助都意味着世界。我曾尝试在线审核一些博客文章/教程,但不会讨论这个特定的问题。
答案 0 :(得分:7)
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)
}