2015-06-09 111 views
1

我剛開始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函數,但沒有成功。

任何指導,高度讚賞!

謝謝。

+0

您是否最初使用約束來定位圖像視圖?如果是這樣,您需要調整約束而不是幀位置,然後通過在動畫塊中放置'[self.view layoutIfNeeded]'來爲約束更改設置動畫。 –

+0

謝謝,羅裏。是的,自動佈局和大小類選項都被檢查。我沒有檢查他們,行爲如預期。最好的祝願。 –

+0

我認爲你剛剛推遲了關閉約束的問題。最好擁抱他們,我發現或未來會對你充滿傷害。在你的情況下,原理是相同的,只需使用約束而不是直接的幀操作並更改約束值。您可以將約束添加爲IBOutlets,以便您輕鬆地在代碼中更改其值。 –

回答

1

您還沒有明確規定,你做什麼,所以讓我們精力放在這段代碼確實做:

UIView.animateWithDuration(4.0, animations: { 
    self.anImageView.center = CGPoint(x: 600, y: 600) 
}, completion: {finished in 
    self.anImageView.center = CGPoint(x:80,y:80) 
}) 

該代碼表示​​:

  1. 無論身在何處現在,開始將圖像視圖從該點移至(600,600)(除非您在iPad上,否則將不在屏幕上)。

  2. 當它到達那裏,使其從(600,600)到(80,80)。

這就是你要說的。所以,如果這不是你想要的,不要那麼說!

+0

是的,我正在研究iPad應用程序。再次,這只是一個測試代碼,使UIImageView在切換圖像數組的同時移動,並使其在動畫完成時執行某些操作。 UIImageView在開始時位於視圖控制器(80,80)處。 –

+0

好吧,我期望它從(80,80)緩慢移動到(600,600),然後跳回到(80,80)。但是你沒有清楚地說出你所看到的與此不同。當然,這裏還有很多其他的東西 - 圖像視圖的大小(請記住,這些座標是圖像視圖的_center_),其內容模式,是否使用自動佈局定位它等。 – matt

+0

謝謝,馬特。這是汽車佈局問題。一旦這個選項沒有被檢查,以及大小班級,行爲是預期的。乾杯。 –

0

取消選中自動佈局選項現在解決了問題。但正確的做法是放棄自動佈局並制定動畫約束。一旦我得到它的工作將發佈解決方案。

+0

好的,但這是錯誤的解決方案。你沒有解決問題;你正在背棄它。你需要使用自動佈局。正確的做法是學習如何在存在自動佈局的情況下進行動畫 - 例如,動畫約束而不是動畫位置,或者暫時從自動佈局中刪除此視圖,然後重新放回。 – matt

+0

謝謝。我肯定會更多地瞭解自動佈局和動畫約束。我編輯了答案來反映這一點。 –

+1

爲什麼不刪除你的問題並重新開始,或者編輯你的問題,這樣你就不會揮動手,而是問如何正確執行這個位置動畫?更好的是,搜索堆棧溢出,不要問任何問題;這裏主要討論瞭如何在自動佈局的情況下進行動畫處理的主題。 – matt