2016-01-24 35 views
-1

當按下按鈕時,我使用下面的代碼將標籤滑動到屏幕上,但它沒有效果。當按下按鈕時使用animateWithDuration但它沒有效果(swift 2)

override func viewDidLayoutSubviews() { 

    summaryLabel.alpha = 0 

} 

@IBAction func searchButton(sender: AnyObject) { 

    UIView.animateWithDuration(2) {() -> Void in 

     self.summaryLabel.center = CGPointMake(self.summaryLabel.center.x - 400, self.summaryLabel.center.y) 
     self.summaryLabel.alpha = 1 
     self.summaryLabel.center = CGPointMake(self.summaryLabel.center.x + 400, self.summaryLabel.center.y) 

    } 

    //button code continues... 

我測試過這是怎麼回事以1固定α,但標籤只是保持它是並按下按鈕時不動。我錯過了什麼?

+0

爲什麼你有兩行代碼改變self.summaryLabel.center –

+0

我試圖將按鈕按下時,將標籤(即alpha = 0)從屏幕上移開,然後將其帶到視圖中以2第二個動畫 – Hikul

+0

將第一行移動到動畫塊之外。或者創建兩個不同的動畫,但要小心第二個應該在第一個完成後纔會發生 –

回答

0

幾件事情:

首先,你的兩個更改視圖的中心相互抵消。動畫在一個動畫中應用動畫塊內的全部更改。如果最終結果沒有變化,則不應用更改。正如Ramy在他的評論中所說的,你需要兩個動畫,定時,所以第二個動畫要在第一個動畫完成後進行,或者你需要在動畫開始之前應用第一個動畫。我建議先從一個單獨的動畫開始,然後開始一個動畫。

第二個問題:視圖控制器默認使用自動佈局。使用自動佈局,您無法直接爲視圖的位置設置動畫。它不能可靠地工作。相反,您必須對視圖進行約束,將其連接到插座,然後通過更改常量並在動畫塊內調用layoutIfNeeded()來動態更改約束的常量值。在動畫塊內對layoutIfNeeded()的調用會導致視圖的位置發生變化,並且由於它位於動畫塊內部,因此將使用動畫應用更改。

相關問題