質問: HUGE // 無限 // アニメーション開始 target.layer.add(ani, forKey: key) } // アニメーション停止 func animateEnd(target: UIView, key: String!) { // アニメーション削除 target.layer.removeAnimation(forKey: key) } } ``` ### 試したこと Timer、メソッドを作成して http://qiita.com/kaorumori/items/c923dea8a0324e9256b1 このページなどを参考にしましたがロジックがよくわかってないため 組み立て方がわかりませんでした。 ### 補足情報(言語/FW/ツール等のバージョンなど) Xcode8 swift3 https://github.com/RieMatsui/github-Music に実際のソースコードを載せています。
回答: `Swift3`ではありませんが以下のサイトで同じ事を解説してます、参考になると思います。 参考URL: Swiftでオーディオプレイヤー:UISliderの設置と、曲の再生時間や再生箇所との同期 とりあえず動いたので変更部分だけ載せておきます。 ``` // 以下を追加 var timer = Timer() //音楽を再生するスイッチを作成 @IBAction func playSwitch(_ sender: UISwitch) { NSLog("\(sender.isOn)") //再生 if sender.isOn == true { Music01.play() //アニメーション開始の処理 animateStart(target: imgvMusic, key: "Move") // 以下を追加 timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(updatePlayingTime), userInfo: nil, repeats: true) } else { //停止 // 以下を追加 timer.invalidate() Music01.stop() //アニメーション停止処理 Music01.prepareToPlay() Music01.currentTime = 0.0 slMusicSize.value = 0.0 animateEnd(target: imgvMusic, key: "Move") } } //再生場所の設定 @IBAction func musicSizeChange(_ sender: UISlider) { Music01.currentTime = TimeInterval(sender.value) // 以下を追加 self.updatePlayingTime() } // 以下を追加 func updatePlayingTime() { slMusicSize.value = Float(Music01.currentTime) } ```