【发布时间】:2016-10-07 20:33:36
【问题描述】:
所以我刚刚从 2.3 升级到 Swift 3.0。除了这行代码及其错误之外,关于我的项目的其他一切都很好:
if let delegate: AnyObject = completionDelegate {
leftToRightTransition.delegate = delegate //ERROR MESSAGE
}
错误信息说:
无法将“AnyObject”类型的值赋给 CAAnimation 类型
下面是完整的相关代码块。本质上,这段代码就是动画。在我的项目的其他地方(我很肯定这与问题无关,而只是为了上下文)有代码允许用户在一组图像中滑动。这个块是它的动画部分('滑动'动画'):
extension UIView {
func rightToLeftAnimation(_ duration: TimeInterval = 0.5, completionDelegate: AnyObject? = nil) {
// Create a CATransition object
let rightToLeftTransition = CATransition()
// Set its callback delegate to the completionDelegate that was provided
if let delegate: AnyObject = completionDelegate {
rightToLeftTransition.delegate = delegate //ERROR MESSAGE ON THIS LINE
}
rightToLeftTransition.type = kCATransitionPush
rightToLeftTransition.subtype = kCATransitionFromLeft
rightToLeftTransition.duration = duration
rightToLeftTransition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
rightToLeftTransition.fillMode = kCAFillModeRemoved
// Add the animation to the View's layer
self.layer.add(rightToLeftTransition, forKey: "rightToLeftTransition")
}
这在 Swift 2.3 中工作得很好,但现在它不起作用了。像这样的小东西让我发疯......任何帮助将不胜感激;)
【问题讨论】:
-
哇,伙计们!感谢您的超快速答案,我很感激。我确信这两个答案都会奏效,但我尝试了 Rob's 并且它奏效了。非常感谢大家!
标签: swift swift3 caanimation