Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

iOSアプリで気になった動きや表現を上手にアレンジして活用してみる

1,512 views

Published on

potatotips #60 (iOS/Android開発Tips共有会) での登壇資料になります。

iOSアプリを利用する中で気になった表現を、自分が開発しているアプリの実装として落とし込んでいくプロセスや、今回は気になった表現をサードパーティ製のUI実装ライブラリを活用した形にする際の実装におけるポイントをまとめました。

サンプルコード:
https://bit.ly/2HKcSbL

Published in: Technology
  • Be the first to comment

iOSアプリで気になった動きや表現を上手にアレンジして活用してみる

  1. 1. iOSアプリで気になった動きや表現を 上手にアレンジして活用してみる Fumiya Sakai (Just1factory) 2019/03/27 potatotips #60 @ ZOZO Technologies
  2. 2. 自己紹介 ・Fumiya Sakai ・Freelance iOS Engineer アカウント: ・Twitter: https://twitter.com/fumiyasac ・Facebook: https://www.facebook.com/fumiya.sakai.37 ・Github: https://github.com/fumiyasac ・Qiita: https://qiita.com/fumiyasac@github 発表者: ・Born on September 21, 1984 これまでの歩み: Web Designer 2008 ~ 2010 Web Engineer 2012 ~ 2016 App Engineer 2017 ~ Present
  3. 3. ほんの少しだけ告知と宣伝 「少しの工夫とアイデアでできる表現集」として、 これまでサンプル開発や実務の中で培ったノウハウ 等から、UI実装いくつかのまとまったサンプル実装 を例にUI構築をする上で重要な実装ポイントやアイ デアを紹介していく形式にしてみました。 本書の収録サンプルはこちらから: https://github.com/fumiyasac/ios_ui_recipe_showcase 念願の「iOSアプリ開発 UI実装であると嬉しいレシピブック」が商業誌に㊗ 概要: Amazonにて電子版の予約受付中です: https://www.amazon.co.jp/dp/B07NQDXY1F
  4. 4. 以前に自分のSwiftの楽しみ方のご紹介について発表しました 私はiOSアプリ開発におけるUI実装という切り口から攻めることが多い iOSアプリUIとの触れ合いと歩む僕なりのSwiftの楽しみ方 ※上記のアプローチに関するイントロダクション: UI表現に関する手段だけではなく、実装をした肌感 や機能にマッチする提案に備えておけるように。 (1) 気になる表現をUIKitだけで模写する ライブラリやGithubで公開されているサンプルの動 きや内部実装を紐解いていくと、そこに実装やUI表 現の着想へのヒントが隠れていることが多い。(2) ライブラリの内部実装からヒントを得る (3) 実際の機能や画面に近いサンプル実装 個人的にこれからも大事にしていきたいと感じている3つの着想からコード実装までのアプローチ https://www.slideshare.net/fumiyasakai37/iosuiswift 今回はUI実装の紐解いていくプロセスを ほんの少しだけでもご紹介できれば!
  5. 5. 最近少し気になっていた細かなUI実装の一例の紹介 例. TabBarを切り替えた時にアニメーションを伴って画面も切り替わる ご紹介したTabBarでの画面切り替えを導入している例 ・(参考アプリ) Facebook / Wantedly Visit 本格的に調べる前段階では、漠然と「こうするんだな」とアタ リが正直ついていなかったことや、実践でも試したことがあり ませんでした。 まずは同様のライブラリ・質問サイト・海外ブログ記事等の情 報を収集することからはじめました。 そういえば実務の中やサンプル開発でも 今回の様にちゃんと向き合ったことはなかったなぁ
  6. 6. 考えていたアイデアや参考デザインも一緒に組み合わせる まとまったある程度のデザインを込みにしたサンプルを作成 さらにひと手間 加えてみたいと感じた表現 ・Twitter/Pinterest/Yummly 動きやテイストに 合いそうなデザインを探す ・Nike ファッションアプリ 気になったUI表現に より近しい動きを探す ・Wantedly Visit 💻 ⇨ 📱 ・Twitter → TabBar画像のバウンドアニメーション ・Pinterest → コンテンツ画像の段差表示の表現 ・Yummly → コンテンツ画像の視差効果の表現 アウトプット インプット インプット インプット 作りながら ポイントを整理
  7. 7. 組み合わせるとこんな感じのサンプルが出来上がりました 画面でのDemoとご一緒にお楽しみください サンプルコードはこちら(まだWIPです) https://bit.ly/2HKcSbL ※ 今後とも拡張や修正は実施予定です
  8. 8. 自分で実装をした部分とライブラリを利用した部分の棲み分け TabBarController関連部分の実装だけライブラリを利用する方針としました 利用しているライブラリは下記2個 ・TransitionableTab ・FontAwesome.swift 今回のライブラリはTabBarに関連する部分の 実装のみでライブラリを利用しました。 Pinterest / Yummly を参考にした表現につ いては以前にUI実装を試したこともあったの でライブラリを用いずに実装しました。 今回はこの 部分の実装を紹介
  9. 9. TabBarControllerの動きをカスタマイズするために まずは基本的な実装のために押さえておきたいのは下記の2つのメソッド https://bit.ly/2TC28xN ※押さえておきたい部分の解説は下記のブログでもまとめています 2. 画面切り替え時のアニメーションを適用する 【実装MEMO】UITabBarControllerでAnimationを実装するためのヒント: 1. タブ要素のアイコン画像にアニメーションを適用する func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) ・UITabBarControllerDelegateが提供しており、TransitionableTabが提供するプロトコルでも考慮されている ・引数から取得できるUITabBarの中からUIImageView要素を取得してアニメーションを加える実装をする
  10. 10. タブ要素のアイコン画像にアニメーションを適用する 例1. UITabBarの中からUIImageView要素を取得してアニメーションを加える 引数のUITabBar要素から子のView階層 の中からUIImageViewを要素だけを取得 して配列の状態にまとめ直している。 その後に押下されたUITabBarItem要素に 対応するタグ値(=インデックス番号)の UIImageViewへアニメーションを適用する。 改めて見てみると結構階層が深い位置 にあるので面食らってしまった。
  11. 11. タブ要素のアイコン画像にアニメーションを適用する 例1. UITabBarの中からUIImageView要素を取得してアニメーションを加える ここで実施しているのは引数に渡された UIImageViewに対して拡大縮小のアファイ ン変換を利用したアニメーション処理。
  12. 12. 切り替え先のIndexを取得して切り替え時のアニメーションをする 例2. 切り替え先のIndexを取得して切り替え時のアニメーションを実行する デフォルトで3種のアニメーションをライ ブラリ: TransitionableTabが用意してく れている(アニメーションの自作も可) ※ move / fade / scaleの3種類 enumでTransitionableTabのタイプに 応じた処理を管理すると良さそうです。 Index値減少時の動き https://github.com/Interactive-Studio/TransitionableTab Index値増加時の動き
  13. 13. 切り替え先のIndexを取得して切り替え時のアニメーションをする 例2. 切り替え先のIndexを取得して切り替え時のアニメーションを実行する https://github.com/Interactive-Studio/TransitionableTab アニメーションの秒数や実行オプションも指定可能です。 enum側で定義したIndex値の増加・減少時 の実行するアニメーションを適用する。 TransitionableTabがよしなにしてくれる お陰でUITabBarControllerDelegateと似た 形で実装ができる点がとてもGoodです。
  14. 14. 今回のまとめ 良いなと思った表現を小さな部分から試して選択できるような実践が大事。 僕はこう思った: デザインも一緒に考えてみたり、頭のなかで考えたアイデアを試してみることで「このデザインなら合いそう だ!」という感覚や着想のヒントを得られるのかなと思いました。 僕の最近の活動: 最近はUI表現系ライブラリを上手に組み合わせたサンプル開発をやっています。うまい具合にまとまったタイミ ングで何かしらの形でアウトプットできればと思います(4月中に間に合うかな…)。 サンプル開発を振り返ってみて: UI開発の場合には、ライブラリにするか自作するかの切り分けや判断を求められる場面は多いと思います。その 中で自分の実装体験や組み合わせ方の実践に関する経験値をアップしておくと良い選択ができそう。
  15. 15. Thank you for listening ! 紹介しきれなかった実装の詳細については、是非ともコード等をご覧頂けましたら幸いです😆

×