我正在使用 Lottie(动画框架),我尝试使用的代表之一是希望我返回一个 Unmanaged<CGColor>!
这是定义:
color(forFrame currentFrame: CGFloat, startKeyframe: CGFloat, endKeyframe: CGFloat, interpolatedProgress: CGFloat, start startColor: CGColor!, end endColor: CGColor!, currentColor interpolatedColor: CGColor!) -> Unmanaged<CGColor>!
如果我只是尝试返回
UIColor.white.cgColor
我会收到一个错误消息Cannot convert return expression of type 'CGColor' to return type 'Unmanaged<CGColor>!'
我已经尝试过查看他们的文档,但他们的示例仅显示如何使用它:
let colorBlock = LOTColorBlockCallback { (currentFrame, startKeyFrame, endKeyFrame, interpolatedProgress, startColor, endColor, interpolatedColor) -> Unmanaged<CGColor> in
return aColor
}
那么我怎样才能返回正确的类型呢?
谢谢
最佳答案
您可以通过调用 Unmanaged
或 passRetained
静态函数来创建 passUnretained
实例,如下所示:Unmanaged.passRetained(UIColor.white.cgColor)
但请记住,如果您决定使用 takeRetainedValue
或使用 passRetained()
函数,则应使用 takeUnretainedValue()
处理此变量的 future 使用(如果您将使用 passUnretained
)。如果不这样做 - 你会出现内存泄漏或可能的崩溃。
关于ios - 我如何返回一个 Unmanaged<CGColor>!在 swift ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49013861/