ホームページ > 記事 > ウェブフロントエンド > iOS アニメーション アニメーション-4-4: CALayer サブクラス: CAReplicatorLayer_html/css_WEB-ITnose
まず第一に、これは一連の記事であり、このトピックの下にある他の記事を参照すると、この記事を理解するのに役立ちます。
前の記事では、CAShpeLayer を紹介し、2 つの例を示しました。よりクリエイティブであれば、これらによって以前は想像できなかったアニメーション効果を作成できます。
今日は CAReplication について説明します
CAReplication はコピー レイヤーであり、必要に応じてレイヤーを複数のコピーにコピーできます。まず CALayer に基づいて追加された API を見てみましょう
instanceCount | 繰り返されるインスタンスレイヤーの数(以下、インスタンスと呼びます) |
instanceDelay | インスタンスの継続時間 |
instanceTransform | インスタンスアニメーション |
instanceColor | Instanceカラー |
インスタンスレッドオフセット | レッドオフセット |
instanceGreenOffset | Green Offset |
instanceBlueOffset | Blue Offset |
instanceAlphaOffset | 透明オフセット |
・
今日は菊を例にします。効果は次のとおりです デモのダウンロード
もちろん、私は怠け者なので、tableView プルダウンのオフセットの代わりにスライダーを使用しました。
実装プロセスも非常に簡単です。CAReplicatorLayerを作成しましょう。
var replicatorLayer = CAReplicatorLayer()replicatorLayer.frame = someView.boundssomeView.layer.addSublayer(replicatorLayer)
実際、この菊の花は、多数の反復された長方形のレイヤーで構成されています。次に、長方形のレイヤーが必要になります
var instanceLayer = CALayer()let layerWidth: CGFloat = 10.0let midX = CGRectGetMidX(someView.bounds) - layerWidth / 2instanceLayer.frame = CGRect(x: midX, y: 0.0, width: layerWidth, height: layerWidth * 2.5)instanceLayer.backgroundColor = UIColor.whiteColor().CGColorreplicatorLayer.addSublayer(instanceLayer)
このように書くと、これは単にreplicatorLayerをビューに配置し、次に長方形のレイヤーを追加します。レプリケーターレイヤーのプロパティの設定を開始できます
最初にカラーを設定します
replicatorLayer.instanceColor = UIColor.grayColor().CGColor// replicatorLayer.instanceRedOffset = 0.0// replicatorLayer.instanceGreenOffset = 0.0// replicatorLayer.instanceBlueOffset = 0.0// replicatorLayer.instanceAlphaOffset = 0.0
ストーリーボード上にスライダーを作成し、ドラッグラインを使用します 強力な人物を生成する方法
@IBAction func slider(sender: UISlider) { let count: Int = Int(sender.value * 30) replicatorLayer.instanceCount = count if sender.value == 1 { replicatorLayer.instanceDelay = CFTimeInterval(1.0 / Double(count)) addAnimation() }else{ if faderAnimation != nil { instanceLayer.opacity = 1.0 instanceLayer.removeAnimationForKey("fader") } } replicatorLayer.instanceTransform = CATransform3DMakeRotation(CGFloat(Float(M_PI * 2.0) * sender.value / Float(count)), 0.0, 0.0, 1.0) }
アニメーションを追加します
func addAnimation() { faderAnimation = CABasicAnimation(keyPath: "opacity") faderAnimation.fromValue = 1.0 faderAnimation.toValue = 0.0 faderAnimation.duration = 1 faderAnimation.repeatCount = Float(Int.max) instanceLayer.opacity = 0.0 instanceLayer.addAnimation(faderAnimation, forKey: "fader") }
必要に応じて、アニメーションの説明はしませんアニメーションについて知っている方は、このトピックの下の過去の記事をお読みください