2015-04-18 57 views
1

目的如何在iOS中對角地移動對象?

我需要我的應用從屏幕中心到左下邊緣角移動的視圖。

代碼

要做到這一點,我在動畫的約束。

UIView.animateWithDuration(10, delay: 0, options: UIViewAnimationOptions.Repeat, animations: { 
     constraintBottomSpace.constant -= 10 
     constraintLeadingSpace.constant -= 10 

     self.view.layoutIfNeeded() 
     }, completion: {(finished: Bool) in}) 
} 

問題

圖像不動。如何對角地移動物體?

回答

1

修改您的約束和動畫塊之前調用setNeedsUpdateConstraints()

撥打電話layoutIfNeeded()裏面的該塊。

例如:

func animateToCorner() { 
    constraintBottomSpace.constant -= 10 
    constraintLeadingSpace.constant -= 10 

    view.setNeedsUpdateConstraints() 

    UIView.animateWithDuration(10, animations: {() -> Void in 
     self.view.layoutIfNeeded() 
    }) 
} 
+0

非常感謝@Aaron!這很好。 – Cesare

+0

可否請您推薦另一種方式來對角地移動視圖?我們使用的代碼似乎只是讓圖像更大,這不是我們想要做的。再次感謝您的幫助! – Cesare

+0

您可能需要將+10添加到頂部和/或尾部約束! –

1

我認爲你需要設置限制的常數是這樣的:使用

constraintBottomSpace.constant = 0 
constraintLeadingSpace.constant = 0 

- = 10只10個像素移動它的角落。沒有這樣的選項

或者試試:

UIView.animateWithDuration(5, animations: {() -> Void in 

    constraintBottomSpace.constant = 0 
    constraintLeadingSpace.constant = 0 
}) { (finished) -> Void in 

} 
+0

謝謝回答!這是一個很好的猜測。我沒有想到這一點。我嘗試按照您的建議修復我的代碼,但我仍然遇到問題。圖像不動。你覺得我應該把'UIViewAnimationOptions'改成與'.Repeat'或'.CurveLinear'不同的東西嗎?再次感謝! – Cesare

+0

我建議嘗試不使用動畫選項,查看我編輯的答案 –