Mais conteúdo relacionado
Semelhante a UIを作る際にライブラリにする? それともDIYする?の切り分け(僕の見解) (20)
Mais de Fumiya Sakai (10)
UIを作る際にライブラリにする? それともDIYする?の切り分け(僕の見解)
- 2. 自己紹介
・酒井 文也 (Fumiya Sakai)
・ever sense. inc エンジニア
・Designer → ServerSide Engineer → AppDeveloper
Accounts
・Facebook: https://www.facebook.com/fumiya.sakai.37
・Twitter: https://twitter.com/fumiyasac
・Github: https://github.com/fumiyasac
・Qiita: https://qiita.com/fumiyasac@github
Who are you?
Library (Personal)
Products (ever sense. inc)
New!
New!
現在はVer0.1.6
- 4. DIY? or Library?の判断の基準はどこだろう…
メリット・デメリットの観点から色々考察をしてみよう
★ Let’s Talk
・皆さんがUIを作る際においての DIY? or Library? の判断の 「決め手」 としているポイントや 「メリット・デメリット」についての見解
・どちらを選択するとしても、それぞれ一長一短はあるので一概に偏った判断はできない
・構築するViewの特性や詳細設計において選択アーキテクチャによっても使い分けをする必要は出てくる
DIY Library
メリット
処理や実装が追いやすい、機能拡張・修正などが容
易な場合が多い など
構築(特に0→1)時間の短縮、既に使うルールが決まっ
ている、実装の整理がしやすい など
デメリット
設計の甘さの影響を受けやすい、保守を怠ると属人
化しやすい、処理量が多くなりがち など
機能拡張の余地が少ない場合がある、処理がライブラ
リに依存しやすい、ビルド時間の増加 など
- 5. 【Case1】 星型のRating表示用のUI作成
動きや仕様によっては、DIYするのがなかなか困難なケースの例
→ UIImageView
★
UIStackView
★ ★ ★ ★
→ UIButton
UIButton及びUIImageViewをOutlet Collection
で繋ぐ & tagプロパティを活用して表現する形。
星の表現が下記のように、整数値で1~5の範囲で
押されたボタンによって変わることを想定した場合。
小数点での表示を考慮して、2.5(星が右半分が欠
けた形)の見た目を実現したい場合は、上記のUIの
構造だと、実装がしにくくなる。
(要望)�今は整数だけだけど、x.5の時も星の表示で表現したい
・ライブラリ: Cosmos
https://github.com/evgenyneu/Cosmos
星型以外の表現も可能、導入や活用もしやすい、IBでも利用可能など
きめ細やかな設定とカスタマイズが可能。
入力用・表示用と共に汎用的に活用可能
- 8. 【Case4】 Animation & CustomTransitionの実装
扱いやすいコード設計を行う際に考えておきたい部分について
・ライブラリ: IBAnimatable
https://github.com/IBAnimatable/IBAnimatable
アニメーションの処理をIntefaceBuilder上で扱い易くするライブラリ
クロージャーを多用する形なので、コードが肥大化し
やすい部分。
Animationを実装する上で注意する部分
細部にこだわった実装をDIYで行う場合には、これら
の実装は複雑なコードになりがちな部分。
(表現に加えて、追いやすい処理という観点も必要)
StructやClassを用いて処理部分を共通化・Module
化をすることはできても、animate()メソッドは引数
が多いので、設計に気を使う部分。
画面遷移時のアニメーションのカスタマイズの詳細は
外部のクラスになるので把握が大変になりがち。
CustomTransitionを実装する上で注意する部分
・ライブラリ: ViewAnimator
https://github.com/marcosgriselli/ViewAnimator
Animationの処理をコード記載を扱い易くするライブラリ
・ライブラリ: Hero
https://github.com/lkzhao/Hero
画面遷移時のカスタムトランジションを扱い易くするライブラリ
<Animation関連ライブラリ例>
<CustomTransition関連ライブラリ例>