2015-08-23 297 views
0

我有一段代碼,它動畫的UIImage的位置,但過渡不是動畫 - 而是立即改變立場。我不相信這是一個代碼問題,因爲相同的代碼在另一個項目上工作,但我無法弄清楚還有什麼問題。UIView動畫沒有動畫

class CenterViewController : UIViewController { 
    @IBOutlet var logoView: UIImageView! 
    @IBOutlet var logoViewVerticalConstraint: NSLayoutConstraint! 

    override func viewDidAppear(animated: Bool) { 
     animateLogo() 
    } 

    func animateLogo() { 
     self.logoViewVerticalConstraint.constant = 35 - (self.view.frame.size.height/2); 
     logoView.setNeedsUpdateConstraints() 
     UIView.animateWithDuration(2.5, animations: { 
      self.logoView.alpha=1 
      self.logoView.layoutIfNeeded() 
     }) 
    } 
} 

alpha動畫但y位置沒有。我的約束是這樣

enter image description here

具體的一個代碼操作是: enter image description here

編輯:我使用的Xcode-β7目標8.4

+0

你應該在cha之前調用'layoutIfNeeded'一次在約束被改變之後約束約束並且一次在動畫塊中。您的代碼在大多數情況下都能正常工作,但有些情況下您需要使用其他方法,而您的代碼可能就是其中之一。 – marosoaie

+0

這沒有任何影響,我不知道爲什麼它 – clicky

回答

0

嘗試

func animateLogo() { 
    logoView.layoutIfNeeded() 
    UIView.animateWithDuration(2.5, animations: { 
     self.logoViewVerticalConstraint.constant = 35 - (self.view.frame.size.height/2); 
     self.logoView.alpha=1 
     self.logoView.layoutIfNeeded() 
    }) 
} 
+0

仍然是相同的問題 – clicky

+0

@clicky你可以隔離這個視圖控制器的代碼,並在github上上傳嗎?這樣可以運行並查看它爲什麼不起作用? –

+0

不要忘記鏈接故事板上的限制條件。 –