2016-07-15 57 views
0

好的,我试图在滚动视图滚动时逐步触发动画。为此,我已将此链接转换为swift - http://www.oliverfoggin.com/controlling-animations-with-a-uiscrollview/如何通过PERCENTAGE在swift中触发动画?

给我滚动视图的百分比偏移量x。这非常棒。

问题是我是相当新的迅速,不知道如何将这回到我现有的动画这是一个变换/移动,而不是改变颜色。

这里是我的动画这里 -

self.borderlines.transform = CATransform3DMakeScale(CGFloat(0.01), CGFloat(1.0), 1) 
self.activeBorder.layer.opacity = 1 

CATransaction.begin() 
self.activeBorder.layer.transform = CATransform3DMakeScale(CGFloat(0.03), CGFloat(1.0), 1) 
let anim2 = CABasicAnimation(keyPath: "transform") 
let fromTransform = CATransform3DMakeScale(CGFloat(0.01), CGFloat(1.0), 1) 
let toTransform = CATransform3DMakeScale(CGFloat(1.0), CGFloat(1.0), 1) 
anim2.fromValue = NSValue(CATransform3D: fromTransform) 
anim2.toValue = NSValue(CATransform3D: toTransform) 
anim2.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseOut) 
anim2.fillMode = kCAFillModeForwards 
anim2.removedOnCompletion = false 
self.activeBorder.layer.addAnimation(anim2, forKey: "_activeBorder") 

CATransaction.commit() 

然后我也有另一种移动动画。因为这些被称为触摸,所以1静态事件。

在教程中,我可以看到重新计算/触发他的动画每个滚动然后改变bg颜色的百分比。我不知道如何将它应用到另一种类型的动画 - 他提到了关键帧,我不知道这些是什么。

我该如何达到这个效果?我需要在这里更改什么?

回答

1

通过将其图层的speed设置为零并操作其作为对滚动的响应的“timeOffset”来查看“冻结”您的动画。

+0

下载示例在这里:https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/bk2ch04p160frozenAnimation/FrozenAnimationTest/ViewController.swift这是一个滑块,而不是滚动视图,但原则是相同。 – matt