LoginSignup
3
5

More than 1 year has passed since last update.

SwiftUIでSmartNewsライクなページメニューを実装

Last updated at Posted at 2022-06-30

demo.gif

SwiftUIで開発を始めた経緯

SwiftUIはApple社が開発した新しいフレームワークで、WWDC 2019で発表され、現在もバージョンアップを繰り返しながら進化しています。

SwiftUIが発表されるまでは、Storyboardを使った開発のみが可能でした。Storyboardは直感的にデザインを組めますが、さまざまな端末サイズへの対応、動的なコンテンツの表示非表示、チームでの開発の観点から見た時、面倒事が起こる場合が多いです。コードのみで開発すれば動的なコンテンツや、コンフリクトを防げますが、コードの可読性の観点からあまりいいとは言えませんでした。また、最近のXcodeは、Storyboardを使うとビルド時間が長くなりがちで、多くの待ち時間が発生している状態でした。

そこで本格的にSwiftUIへの乗り換えの検討を始めました。

ここ1ヶ月、本格的にSwiftUIを触り始めたのですが、Storybaordで感じていた煩わしさが一掃されているだけでなく、簡単にリッチなUIやアニメーションを少ないコードで実現でき感動しました。

Storyboardではページごとの確認も手間でしたが、SwiftUIのプレビュー機能で、ページを、複数の端末サイズ一度に確認することができます。アプリ開発を着手し始めたばかりであったり、これからアプリを一から作る人は、SwiftUIをお勧めします。

SwiftUIを導入しない理由として、ライブラリが少ないと考える人も多いかもしれません。しかし、複雑なUIやアニメーションを、少ないコードで実現できるので、SwiftUIが慣れてきてからは、UI関連のライブラリの必要性をほとんど感じません。今回作ったページメニューも、数時間ほどで作ることができました。

ページメニューを実現する

現在開発中のアプリは、SmartNewsのようなページタブがあるタイプのアプリです。当初はStoryboardを使用していたため、このUIを実現するために、PagingKitを使用していました。他にもいろいろなページメニューのライブラリがありますが、導入方法であったり、ドキュメントを読んたりに時間がかかってしまいました。

ですが、SwiftUIを使えばそれらのライブラリを使うまでもなく、少ないコードで実現できました。まだまだ勉強中なのでもう少しいいやり方があるかもしれませんが、すこし齧っただけで作れてしまうので、SwiftUIの可能性を感じます。

ソースコードはこちらに上げてあります。

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5