質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

0回答

1456閲覧

Swift CAAnimationについて

okome_daisuki

総合スコア8

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2016/08/05 13:27

編集2022/01/12 10:55

###前提・実現したいこと
Swiftにてlayerをアニメーションさせる処理を書いています。
レイヤーポジションのアニメーションは問題なく機能しているのですが、やりたい事がもう1つ。
アニメーション中の特定のタイミングにてlayerのアニメーション画像を切り替えたいのです。
この条件のアニメーションを1つのCAAnimationで完結させたいと考えています。

###該当のソースコード
let animation = CAKeyframeAnimation(keyPath: "position")
animation.delegate = self
animation.duration = 4.5
animation.keyTimes = [0.0,0.44,0.66,0.78,1.0]

let path = UIBezierPath()
path.moveToPoint(view.layer.position)
path.addLineToPoint(firstPoint)
path.addQuadCurveToPoint(secondPoint, controlPoint: curvePoint)
path.addLineToPoint(secondPoint) // 今回アニメーション画像を切り替えたいタイミング
path.addLineToPoint(firstPoint)

animation.path = path.CGPath
animation.setValue(view.layer, forKey: "animation")
view.layer.addAnimation(animation, forKey: "animation")

view.layer.position = firstPoint

上記のコードですと
firstPoint → secondPoint → secondPoint(0.5秒ほどその場で待機) → firstPointに戻る
この様な流れになっているのですが、この0.5秒ほど待機している間だけlayerのアニメーション画像を切り替えたいと思っています。

###試したこと
let delay = 3.0 * Double(NSEC_PER_SEC)
let time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay))
dispatch_after(time, dispatch_get_main_queue(), {
// layerのアニメーション画像を切り替える処理
})

この方法でも一応は実現できたのですが、今回は1つのCAAnimation内で完結させたいと考えています。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

u39ueda

2016/08/08 09:38

> layerのアニメーション画像を切り替え とありますが、具体的にはどんな処理でしょうか? UIImageViewのimageにセットするとか、 UIImageViewのanimationImagesにセットするとか、 カスタムビューのdrawRectで独自に描画しているとか、 どんな処理かによって無理だったり回答が変わります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問