我已經使用iOS 8.1設置了一個非常簡單的單視圖應用程序(在Swift中)。我已經將一個UIImageView添加到主視圖控制器視圖。我正在嘗試使用CAKeyframeAnimation爲一系列圖像製作動畫。我最初使用的UIImageView animationImages屬性工作正常,但我需要能夠精確知道何時動畫完成,因此移動到CAKeyframeAnimation。Swift CAKeyframe動畫不顯示圖像
我的代碼如下:
class ViewController: UIViewController {
@IBOutlet weak var imageView: UIImageView!
var animation : CAKeyframeAnimation!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let animationImages:[AnyObject] = [UIImage(named: "image-1")!, UIImage(named: "image-2")!, UIImage(named: "image-3")!, UIImage(named: "image-4")!]
animation = CAKeyframeAnimation(keyPath: "contents")
animation.calculationMode = kCAAnimationDiscrete
animation.duration = 25
animation.values = animationImages
animation.repeatCount = 25
animation.removedOnCompletion = false
animation.fillMode = kCAFillModeForwards
self.imageView.layer.addAnimation(animation, forKey: "contents")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
的問題是,動畫不顯示任何圖像,我只是得到一個空白屏幕。在上面的代碼中是否有我缺少的東西?我怎樣才能讓動畫顯示?
這不完全是答案,但要注意在'viewDidLoad'中做一個動畫是沒有意義的。當時發生的所有事情都是視圖加載到視圖控制器中。該視圖尚未在界面中顯示。 'viewDidLoad'沒有什麼可看的。 – matt
感謝馬特的糾正。在我最初的代碼庫中,我確實從viewDidAppear調用了它,但在將簡單的測試項目放在一起時,我不幸沒有考慮放置它的正確位置。 – prajna
沒問題 - 只要確保你意識到不同。你之前是! – matt