我剛開始iOS開發,正在學習Swift和Xcode。我在視圖控制器中有一個UIImageView對象,並希望在切換兩個圖像時將此UIImageView移動到屏幕上。這裏的代碼:UIImageView動畫連同動畫圖像
@IBOutlet weak var anImageView: UIImageView!
@IBAction func beginAnimation(sender: AnyObject) {
let imgListArray:[AnyObject] = [UIImage(named: "img1.png")!, UIImage(named: "img2.png")!]
anImageView.animationImages = imgListArray
anImageView.animationDuration = 0.5
anImageView.image = UIImage(named: "img1.png")
anImageView.startAnimating()
UIView.animateWithDuration(4.0, animations: {
self.anImageView.center = CGPoint(x: 600, y: 600)
}, completion: {finished in
self.anImageView.center = CGPoint(x:80,y:80)})
}
問題是與座標。 UIImageView從屏幕開始並且不在(80,80)處結束。切換很好。
我想我必須將座標轉換爲超視圖(?)空間,但是我的嘗試並未成功。例如,我嘗試了convertPoint函數,但沒有成功。
任何指導,高度讚賞!
謝謝。
您是否最初使用約束來定位圖像視圖?如果是這樣,您需要調整約束而不是幀位置,然後通過在動畫塊中放置'[self.view layoutIfNeeded]'來爲約束更改設置動畫。 –
謝謝,羅裏。是的,自動佈局和大小類選項都被檢查。我沒有檢查他們,行爲如預期。最好的祝願。 –
我認爲你剛剛推遲了關閉約束的問題。最好擁抱他們,我發現或未來會對你充滿傷害。在你的情況下,原理是相同的,只需使用約束而不是直接的幀操作並更改約束值。您可以將約束添加爲IBOutlets,以便您輕鬆地在代碼中更改其值。 –