アニメーションしているViewを手軽に録画してムービーとして保存出来るクラスRecViewAnimationを作成・公開しました
お疲れ様です。
タイトルの通りアニメーションしているViewを録画してムービーとして保存出来るクラス、RecViewAnimationを作成しました。
以下にて公開しております。
▶︎GitHub - anthrgrnwrld/tryRecordingViewAnimation
「アニメーションしているView」ってのは、アニメーションしているViewそのものではなくて、そうゆうViewを内包している親Viewのことです。そいつに映ってるものを録画出来るというわけ。
前回、前々々回の更新はこいつの作成の中で調べた内容なんですよ。
作成した経緯
自作アプリでスクリーンに映っているアニメーションを録画する機能があります。
録画方法はAppleが標準で提供してくれているReplayKitを使用しているのですが、iOS11になってから、極端にその録画に失敗するようになってしましました。
何とか使えるようにならないか検討したのですがどうにもならず、それなら自分で録画用クラスを作成してしまおう!となった訳です。
使用方法
使い方はとてもシンプルにしたつもりです。
このプロジェクト内にある"RecordingViewAnimation.swift”を使用したいプロジェクトにまず放り込みます。
そして使いたいところで以下のような感じでレコーダーを作成してあげます。
let recorder = RecViewAnimation.shared
録画開始したい時には
recorder.startRecording(view: [対象のView], fpsSetting: [フレームレート(1秒間に何コマ表示させるか)]
をコールします。
そして録画停止したい時には
recorder.stopRecording()
をコールします。
このstartRecordingのコールで写真ライブラリへの保存まで行います。
(今後オプションでライブラリへの保存はせず、ファイルパスを渡すようなUpdateもアリかもしれません。)
録画保存の完了を通知して欲しい場合もあるかと思います。
その場合にはrecViewDidFinishedToSaveDelegateを使用して下さい。
その際にはUIViewControllerへのRecViewAnimationDelegateの追加、そしてrecorder.delegate = self
の記載を忘れないで下さい。
因みにRecViewAnimationはSingletonクラスなので、どこでRecViewAnimation.shared作っても内容は保持されてますので安心です。
(もちろん停止したら消去するようにしてます。)
また、途中でViewのサイズが変更されてしまった際(画面がRotateしちゃった時とかね)、強制的に録画をStopする仕様にしてます。
このようなケースで録画終了してしまった場合にはDelegateメソッド recViewDidFinishedWithoutCallToStop で通知します。
あ〜最後に、このクラスはPhotoライブラリーへファイルを追加する為、Info.plistにPrivacy - Photo Library Additions Usage Descriptionの記載も必要になります。気をつけて!
以上になります。
そんなに多機能ではありませんが、使ってもらえると嬉しいです。
因みに...
きっかけとなったアプリはiOS11のアップデートによって現象が発生しなくなりました。。。
なんだかな〜。
他で使えるアプリを考えているところです。