因此,我得到了一套在另一套裏面的戒指。我希望能夠進行縮放,並且,當我縮小足夠的距離時,縮放應該使動畫處於動畫狀態,然後再繼續縮放。在放大時播放「卡入/彈出」動畫,縮小
我已經做了變焦部很容易地使用CGAffineTransform和UIPinchGesture識別,這裏是尺度方法的樣子:
func scale(gesture: UIPinchGestureRecognizer) {
if !animationInProgress {
for var i = 0; i < scrollViews.count; i++ {
var view = scrollViews[i]
var j = 0
for ; j < scrollViews.count; j++ {
if view == scrollViews[j] {
break
}
}
println("Animation in progress: \(animationInProgress)")
if view.frame.origin.x < -80 || view.frame.origin.y < -140 {
if !view.hidden {
currentViewIndex = j + 1
view.hidden = true
view.visible = false
println("new view got out of the screen")
snapIn = true
animateSnap(snapIn)
}
} else {
if view.hidden == true {
currentViewIndex = j
view.hidden = false
view.visible = true
println("new view got into the screen")
snapIn = false
animateSnap(snapIn)
}
}
view.transform = CGAffineTransformScale(view.transform, gesture.scale, gesture.scale)
println("transformed")
}
gesture.scale = 1
}
}
所以我們從我們的觀點迭代中,frame.origin x和y檢查,視圖是否在屏幕之外,並且我設置了一些標誌,一些計算結果。
這個想法如下,當一個圓圈離開屏幕,其餘的動畫放大和縮小,當新的視圖到達屏幕上。
這裏是一個animateSnap功能:
private func animateSnap(snapIn: Bool) {
let factor: CGFloat = snapIn ? 1.5 : 0.5
for var a = currentViewIndex; a < scrollViews.count; a++ {
let next = scrollViews[a]
var transformAnimation = CABasicAnimation(keyPath: "transform")
transformAnimation.duration = 1
transformAnimation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear)
transformAnimation.removedOnCompletion = false
transformAnimation.fillMode = kCAFillModeForwards
transformAnimation.delegate = self
let transform = CATransform3DScale(next.layer.transform, factor, factor, 1)
transformAnimation.toValue = NSValue(CATransform3D:transform)
next.layer.addAnimation(transformAnimation, forKey: "transform")
}
}
的問題是:是否有人知道一個優雅的解決這個或看到我的做法任何缺陷?問題發生在動畫結束時,視圖有時會回到他們開始的位置。我不知道爲什麼,因爲完成刪除設置爲false。另外,我能用CGAffineTransform進行縮放和CATransform3D會不會影響結果?
非常感謝!
」另外,我用CGAffineTransform進行縮放和CATransform3D會不會影響結果呢?「這就是爲什麼它沒有按預定方式行事的確切原因。通過使用CGAffineTransform和UIView.animateWithDuration()解決了這個問題,我希望它能幫助某人。 –