2017-02-01 111 views
0

我試圖實現這樣的效果,即當我向上滑動視圖時,按鈕邊緣將向頂部移動,直到它消失(視圖高度將變小並且小)。 我希望頂部邊緣保持原位,並且只需移動按鈕邊緣。我如何調整這個代碼來實現呢?如何僅用動畫變換視圖的按鈕邊緣

 UIView.animate(withDuration: 5.0, animations: {() in 
    self.topView.translatesAutoresizingMaskIntoConstraints = false 
    self.topView.transform = CGAffineTransform(scaleX: 1,y: 5) 
    }) 
    self.topView.transform = CGAffineTransform.identity 

回答

1

首先,你應該需要方法的順序調用你的代碼(不是絕對必要的,但看起來更好):

self.topView.transform = CGAffineTransform.identity 
UIView.animate(withDuration: 5.0, animations: {() in 
    self.topView.translatesAutoresizingMaskIntoConstraints = false 
    self.topView.transform = CGAffineTransform(scaleX: 1,y: 5) 
}) 

這個尺度變換將縮小視圖的中心;如果你想保持榜首的位置,你會添加一個translateBy(X:Y :)改造,並將其添加到尺度變換,或多或少是這樣的:

UIView.animate(withDuration: 5.0, animations: {() in 
    self.topView.translatesAutoresizingMaskIntoConstraints = false 
    let scaleTransform = CGAffineTransform(scaleX: 1,y: 5) 
    let translateTransform = CGAffineTransform(translationX: 0,y: -100) 
    let combined = scaleTransform.concatenating(translateTransform) 
    self.topView.transform = combined 
}) 

或者您也可以動畫的框架該視圖如下所述: Core Animation for UIView.frame

+0

謝謝,它的工作原理(仍然需要調整細節)。結合轉變是我不知道的 – Sharonica