#iOS QuartzCodeでローディングアニメーションをつくってみたまとめ
QuartzCode
GUIでアニメーションを作れるコードジェネレータ
作ったアニメーションはSwiftとObjective-CでExportできる
TIPS: 同じようなジェネレータには、CoreAnimatorもあります
完成形のローディングアニメーション
gifに変換したのでカクカクですが、本当は滑らかなアニメーションです
前準備
-
http://www.quartzcodeapp.com/ に行く
-
Free Trialからダウンロード
- QuartzCodeを開く
準備OKです!
手順
1. インジケータの形をつくる
インジケータの形は、Shapeをコピペしてつくります
今回は円形(Oval)でつくりますが、好きな形でOKです
Shapes > Ovalと、Replicatorを選んで配置する
Replicatorはとりあえずカンバスの中央に
円形は後でコピペするためにちょっと上の方に配置してみました
Layer
上のOvalをドラッグしてReplicatorに入れる
Replicator > Ovalのように、レイヤー構造が変わりました
Layers
上でReplicatorを選び、Inspector
からリピート方法を設定する
今回は円形を10個複製して配置したいので、以下のように設定しました
- Instance Count(繰り返しの個数): 10
- Rotation(回転): Z軸を36° (360° / 10個)
インジケータの形が出来上がりました
2. ローディングらしいアニメーションをつける
10個の円それぞれには、同じアニメーションをつけます
1つずつ順々にアニメーションの開始を遅らせるとローディングらしくなります
今回は、OpacityとTransformのScaleをいじってみます
Layer
でOvalを選び、Timeline
上でOpacityとTransformを追加する
+ボタン
から追加します
Keyframe Inspector
からOpacityの値を設定する
開始〜終了の間で、だんだん透明になっていく動きを以下のように設定します
- アニメーションのキーフレームが1秒の地点
-
Keyframe Inspector
> Opacity > Value : 0 (完全に透明にする)
Keyframe Inspector
からTransformの値を設定する
開始〜終了の間で、だんだん小さくなっていく動きを以下のように設定します
- アニメーションのキーフレームが1秒の地点
-
Keyframe Inspector
> Transform > Scale : x 0.2 (横を0.2倍にする) -
Keyframe Inspector
> Transform > Scale : y 0.2 (縦を0.2倍にする)
この時点で、すべての円形に同じ動きがついている状態です
このまま再生をすると、すべての円が開始〜終了で同時に消えていくアニメーションになっています
Layer
でReplicatorを選び、Instance Delayの値を設定する
各円形のアニメーションを少しずつ遅らせます
今回は円形を10個複製して配置したので、以下のように設定しました
- Instance Delay(繰り返しの個数): 0.1 (アニメーションの長さ1秒 / 10個)
Timeline
のOvalを選択し、Keyframe Inspector
でINF設定をONにする
INFINIT
(無限)設定にすると、よしなにアニメーションを繰り返してくれます
これでアニメーションが完成です
3. SwiftコードをExportする
File > Export CodeでソースコードをExport
SwiftかObjective-Cかの選択、Swift3対応をするかどうかなどの諸々のオプションを設定できます
生成されたコード
TIPS: 実装サンプルは https://github.com/mafmoff/QuartzCodeSample
生成されるのは以下の2つ
LoadingView(クラス名は任意)
ソースコードは、QuartzCodeSample/LoadingView.swift
- 具体的なアニメーションの細かい設定が書かれている
-
@IBDesignable
指定ありなので、Storyboardに乗せてアニメーションスタートさせるだけで実装できる - Storyboardからではなく、コードから生成することもできる
QCMethod.swift
ソースコードは、QuartzCodeSample/QCMethod.swift
- Viewでどんなアニメが発生しても変わらない、共通メソッドの定義
参考
まとめ
QuartzCode利用のメリット・デメリット
メリット
- アニメーションの面倒な計算をしなくて済む
- 実際に動きを再生しながら作れるので、コードを書いた後の調整が不要
- Exportすると、xib上でViewを載せてクラスを指定するだけで、実装完了
- しばらくアニメーションを書かないとなる浦島太郎状態にならなくて済む
- エンジニアじゃなくてもアニメーションが作れる
デメリット
- QuartzCodeのファイルをなくしたら、保守できない・作り直し
-
QCMethod.swift
の黒魔術感がすごく気になる
- 学習コストがかかる
- ドキュメントが英語で、用語がわからないと読みづらい
- $89.99と高い(CoreAnimatorよりは安い)
- 操作性がいまいち(ピンチイン・アウトなどでカンバスやタイムラインが拡大できないのが辛い)
- やりたいことをすべては実現できない
感想
QCMethod.swift
の黒魔術感がすごく気になる生成されたコードを参考として利用して、整理して組み直すような使い方をしても良いかなと思います。
また、コードを保守できないのは辛いですが、アニメーションはガンガン変更が入るケースは少なそうなので、そこまでメンテ性は気にしなくてもいいかなと感じています。
できればもっと操作性が良くなると良いのにと、期待してしまいます!
以上です、ありがとうございました
Author And Source
この問題について(#iOS QuartzCodeでローディングアニメーションをつくってみたまとめ), 我々は、より多くの情報をここで見つけました https://qiita.com/mesummery/items/498ce6ba2f23d1970bd4著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .