0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SwiftUIに欲しい機能5選

Last updated at Posted at 2024-10-13

SwiftUIに欲しい機能5選

SwiftUIは徐々に機能が拡充され、iOS17頃からかなり実用的になってきました。UIkitでは癖のあった共有機能なども、SwiftUIでは1行で実現できるようになり、その進化は目覚ましいものがあります。
今回は、私が個人的にSwiftUIネイティブで実装されて欲しいと思う機能5選を紹介します。

リサーチ不足により、既にSwiftUI単独で実現できる機能が含まれている可能性があります

*2024年10月時点の情報です

是非コメントにてSwiftUIに実装されて欲しい機能を教えてください!

1. カメラ機能

iOS17からPhotosPickerの導入により、簡単かつ安全に写真アプリから、ユーザーがアプリ内に画像を取り込めるようになりました。一方で、カメラを使用するには依然としてUIImagePickerControllerUIViewControllerRepresentableでラップして使う必要があります。

IMG_2222.jpeg

写真アプリからの取り込みにはPHPickerViewControllerが推奨されていることから、そろそろカメラ機能に対するネイティブAPIの登場を期待したいところです。さらに、アスペクト比の調整などもネイティブUIでできるようになると便利です。

2. アプリ内ブラウザ

アプリの利用規約やプライバシーポリシーを、ユーザーをアプリから離脱させることなく表示するために、アプリ内ブラウザはよく使われています。現状ではSFSafariViewControllerUIViewControllerRepresentableでラップする方法しかありません。
IMG_2220.jpeg

これがShareLinkのように数行で簡単に使用できるようになれば、より扱いやすくなるでしょう。

3. 選択可能なText

Webページのようにアプリ内の文字列をコピー・共有できる機能は、ユーザー体験の一部として当然のものです。

IMG_2214.jpeg

しかし、SwiftUIのTextビューは依然として文字選択に対応していません。Textビューに.textSelection(.enabled)を適用することで文字選択が可能になりそうですが、Appleの公式ドキュメントにも記載されている通り、iOSではシステムメニューは表示されても、文字列の一部を選択してコピーすることはできません。

現状では、UITextViewisEditable = falseisScrollEnabled = falseとして、UIViewControllerRepresentableでラップするしかありませんが、この方法にはサイズ調整の癖があり、別途対応が必要です。この解決策については、また別の記事で紹介します。

4. プレースホルダー付きのTextEditor

TextFieldはプレースホルダーを設定できますが、TextEditorにはそれがありません。現時点では、TextEditorの空文字時に.overlayを使ってプレースホルダーを重ねる方法や、iOS16以降であればTextFieldaxis: .verticalを設定して複数行入力に対応する方法などが考えられます。

しかし、TextFieldにはスクロール機能がないため、厳密には代替とは言えません。もちろん、自分で拡張することも可能ですが、デフォルトのAPIとして対応してほしいところです。

5. Progressive Blur(可変ブラー)

最後はprogressive blur(可変ブラー)です。アプリライブラリやiOS18の写真アプリ、ジャーナルアプリなどで見られる、このボカシ効果は、ブラーの半径が座標によって徐々に変化するというものです。

IMG_2217.gif

Appleのネイティブアプリでは、iOS17以降で利用可能なvariableBlurという非公開APIを使用していると考えられますが、UIkitでもSwiftUIでも現状では使用できません。iOS18で公開されるのではと期待されていましたが、まだ実現していません。


皆さんが望むSwiftUIの機能や実装を、ぜひコメントで教えてください!

0
3
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
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?