2016-04-03 83 views
0

我已經爲圖像做了佈局。所以我沒有任何CGPoint x和y值。 Storyboard picture 正如你所看到的,我做了5個圓圈和一個主圓。當用戶打開應用程序時,我想讓這5個圈子來自主圈後面。我做了大量的研究,並且發現我可以使用彈簧動畫方法,因爲在物理等方面它看起來更加真實。但是,它只是沒有解決。如何將swift動畫添加到圖像中?

首先我改變circle1的中心並將它發送到主圓的背面(它不起作用)由於失敗,圓不會從背後出現。

我不確定爲什麼我不能改變圓的位置。是因爲我已經制定了佈局?

這裏是我的代碼:

@IBOutlet weak var mainCircle: UIButton! 
@IBOutlet weak var circle1: UIImageView! 



override func viewDidAppear(animated: Bool) { 

self.circle1.center = self.mainCircle.center

UIView.animateWithDuration(0.5, delay: 0.5, usingSpringWithDamping: 0.9, initialSpringVelocity: 0.0, options: [] , animations: { 
     self.circle1.center = CGPointMake(160, 219) 
     }, completion: nil) 
} 

請幫助我。 非常感謝。

回答

0

將選項參數設置爲[],這會在您的彈簧動畫中將選項設置爲空。


爲了您的動畫,把這個行:

self.circle1.center = self.mainCircle.center

viewDidLoad()方法。

然後,在您的彈簧動畫中,更改代碼,以便使用相對於mainCirle的位置來計算位置,而不是固定值。像這樣:

self.circle1.center = CGPointMake(self.mainCircle.center.x-75, self.mainCircle.center.x-75) 

您可以將此點更改爲您希望您的圓形從主圓形處進入的任何方向。


完整代碼:

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.circle1.center = self.mainCircle.center 
} 

override func viewDidAppear(animated: Bool) { 
    UIView.animateWithDuration(0.5, delay: 0.5, usingSpringWithDamping: 0.9, initialSpringVelocity: 0.0, options: [] , animations: { 
     self.circle1.center = CGPointMake(self.mainCircle.center.x-75, self.mainCircle.center.x-75) 
    }, completion: nil) 
} 
+0

是的。非常感謝。但我仍然無法移動物體。有任何想法嗎? –

+0

如果您在視圖加載時進行動畫製作,請確保您在'viewDidAppear'方法中進行動畫製作,而不是'viewDidLoad'方法,因爲在viewDidLoad中它將在顯示視圖之前發生。如果這不起作用,你會顯示更多的代碼,例如,當你調用它和你的代碼的其餘部分? – brimstone

+0

謝謝您的回覆。我不明白爲什麼它沒有解決。我編輯的問題,以便我可以告訴你我的整個代碼。你能再檢查一次嗎?首先,我要將所有小圓圈居中放在主圓圈後面,當用戶打開應用程序時,我希望小圓圈能夠放置原來的位置,我之前進行了自動佈局。非常感謝。 –

0

有簡化春季動畫,是值得研究的一個非常有用的庫。您可以在下面下載:

https://github.com/MengTo/Spring

我有很多的動畫在我的應用程序,這使得它很容易。您可能想要將所有圓圈設置爲中心,然後更改它們的x,y並使用animateTo()。