SwiftUIでPageControlを使用する

SwiftUIでPageControlを使用する方法です。


SwiftUIでシートを出し分ける

SwiftUIでシートを出し分ける方法です。


SwiftMarkdownを使いマークダウンを表示する

SwiftMarkdownを使いマークダウンを表示する方法です。


SwiftUIで画像をピンチで拡大する(UIImageView + UIScrollView)

SwiftUIで画像をピンチで拡大する(UIImageView + UIScrollView)方法です。


SwiftUIで画像をピンチで拡大する(PDFView)

SwiftUIで画像をピンチで拡大する(PDFView)方法です。


SwiftUIで画像をピンチで拡大する(MagnificationGesture)

SwiftUIでPreviewを横向きにする方法です。


SwiftUIでPHPickerViewControllerを使って画像を選択する

SwiftUIでPHPickerViewControllerを使って画像を選択する方法です。


SwiftUIでスライダーとスクロールを連動させる

SwiftUIでスライダーとスクロールを連動させる方法です。


SwiftUIでカメラを使う

SwiftUIでカメラを使う方法です。 カメラを利用できるViewを作成し、sheetで表示しています。 権限の追加も必要です。


Identifiableに適合していないStructでListを使う

Identifiableに適合していないStructでListを使う方法です。


SwiftUIのTabViewのタブをコードから動的に切り替える

SwiftUIのTabViewのタブをコードから動的に切り替える方法です。


SwiftUIでListにButtonを設定して異なる画面に遷移する

SwiftUIでListにButtonを設定して異なる画面に遷移する方法です。


SwiftUIで少しカスタマイズしたインディケーターを表示する

SwiftUIで少しカスタマイズしたインディケーターを表示する方法です。


SwiftUIでインディケーターを表示する

SwiftUIでインディケーターを表示する方法です。


SwiftUIでUIActivityViewControllerを表示する

SwiftUIでUIActivityViewControllerを表示する方法です。


iOSのファイルアプリ(UIDocumentPickerViewController)を開いてドキュメントフォルダに保存したファイルを開く

iOSのファイルアプリ(UIDocumentPickerViewController)を開いてドキュメントフォルダに保存したファイルを開く方法です。


SwiftUIでObservableObjectの@publishedなプロパティとBindingする

SwiftUIでObservableObjectの@publishedなプロパティとBindingする方法です。


Swiftのasync,awaitを使ってAPIと画像を取得し、全てが揃ってから表示する

Swiftのasync,awaitを使ってAPIと画像を取得し、全てが揃ってから表示する方法です。


SwiftUIでBadgeを表示する

SwiftUIでBadgeを表示する方法です。


NavigationStackのpathを使って画面遷移する

NavigationStackのpathを使って画面遷移する方法です。


SwiftUIでテーブルのようなデータを表示する

SwiftUIでテーブルのようなデータを表示する法です。


SwiftUIで音楽を再生する

SwiftUIで音楽を再生する方法です。


SwiftUIでdelegateを使用する

SwiftUIでdelegateを使用する方法です。


SwiftUIでグラフを表示する

SwiftUIでグラフを表示する方法です。


SwiftUIでAppDelegateを使用する

SwiftUIでAppDelegateを使用する方法です。アプリ終了時にUserDefaultsに値を保存しています。


Swiftで10進数を2進数に変換する

Swiftで10進数を2進数に変換する方法です。


SwiftUIでローカル通知を送信する

SwiftUIでローカル通知を送信する方法です。


SwiftUIでアラートのメッセージを出し分ける

SwiftUIでアラートのメッセージを出し分ける方法です。


SwiftUIでカレンダーを作成する

SwiftUIでカレンダーを作成する方法です。


SwiftUIでImageの色を反転させる

SwiftUIでImageの色を反転させる方法です。


SwiftUIでMapを表示し、自分の位置を表示しつつコンパスを表示する

SwiftUIでMapを表示し、自分の位置を表示しつつコンパスを表示する方法です。


SwiftUIでMapを表示し、自分の位置を赤丸でマークする

SwiftUIでMapを表示し、自分の位置を赤丸でマークする方法です。


SwiftUIでMapを表示し、自分の位置を中心にする

SwiftUIでMapを表示し、自分の位置を中心にする方法です。


SwiftUIでMapを表示する

SwiftUIを使ってMapを表示してください。秋葉原UDX(35.7005° N, 139.7726° E)を中心として、300mの範囲を表示しています。


SwiftUIでSearchBar(TextField)にクリアボタンをつける

SwiftUIでSearchBar(TextField)にクリアボタンをつける方法です。


SwiftUIでSearchBar(TextField)を使って検索する

SwiftUIでPreviewを横向きにする方法です。


SwiftUIのListの中にボタンを複数設置する

SwiftUIのListの中にボタンを複数設置する方法です。


SwiftUIのListでSpacerの部分にもタップ判定をつける

SwiftUIのListでSpacerの部分にもタップ判定をつける方法です。


SwiftUIでListをEditModeにして並び替える

SwiftUIでListをEditModeにして並び替える方法です。


SwiftUIでシートを表示し、プッシュ遷移後にシートを閉じる

SwiftUIでシートを表示し、プッシュ遷移後にシートを閉じる方法です。


SwiftUIのTextFieldで表示するキーボードを指定する

SwiftUIのTextFieldで表示するキーボードを指定する方法です。


SwiftUIでButtonを有効にしたり無効にしたりする

SwiftUIでButtonを有効にしたり無効にしたりする方法です。


SwiftUIでViewを横スクロールで表示する

SwiftUIでViewを横スクロールで表示する方法です。


SwiftUIでボタンを押すとポップアップを表示する

SwiftUIでボタンを押すとポップアップを表示する法です。


SwiftUIでBMIを計算し、結果を別のViewで表示する

SwiftUIでBMIを計算し、結果を別のViewで表示する方法です。


SwiftUIでモーダルを表示する時に値を渡す

SwiftUIでモーダルを表示する時に値を渡す方法です。


SwiftUIでAVAudioPlayerで音楽を再生し、再生終了を検知する

SwiftUIでAVAudioPlayerで音楽を再生し、再生終了を検知する方法です。


SwiftUIを使ったTODOアプリのサンプル

SwiftUIを使ったTODOアプリのサンプルです。


SwiftUIでMapを使う。Mapに画像や図形を表示する

SwiftUIでMapを使う。Mapに画像や図形を表示する法です。


SwiftUIでViewの上にViewを重ねる

SwiftUIでViewの上にViewを重ねる方法です。


SwiftUIでAppStorageを使ってUserDefaultの値を監視する

SwiftUIでAppStorageを使ってUserDefaultの値を監視する方法です。


SwiftUIのTextFieldで編集中と編集完了を検知する

SwiftUIのTextFieldで編集中と編集完了を検知する方法です。


GithubのAPIを叩き、リポジトリの情報をリストに表示する。一番下までスクロールされたら追加で取得し、Indicatorも表示する

GithubのAPIを叩き、リポジトリの情報をリストに表示する。一番下までスクロールされたら追加で取得し、Indicatorも表示する方法です。


GithubのAPIを叩き、リポジトリの情報をリストに表示する。一番下までスクロールされたら追加で取得する

GithubのAPIを叩き、リポジトリの情報をリストに表示する。一番下までスクロールされたら追加で取得する方法です。


GithubのAPIを叩き、リポジトリの情報をリストに表示する(async, await)

GithubのAPIを叩き、リポジトリの情報をリストに表示する(async, await)方法です。


マークダウンのリンクの色を赤色に変える

マークダウンのリンクの色を赤色に変える方法です。


変数に格納したマークダウンを表示する

変数に格納したマークダウンを表示する方法です。


マークダウンを表示する

マークダウンを表示する方法です。


SwiftUIでハーフモーダルを表示する

SwiftUIでハーフモーダルを表示する方法です。


SwiftUIでアプリ起動時に画面を遷移させる

SwiftUIでアプリ起動時に画面を遷移させる方法です。


SwiftUIで閉じることができないモーダルを表示する

SwiftUIで閉じることができないモーダルを表示する方法です。


スワイプで遷移するチュートリアル画面を作る

スワイプで遷移するチュートリアル画面を作る方法です。


UICollectionViewのようにViewを並べる

UICollectionViewのようにViewを並べる方法です。


端末のシェイクを検知する

端末のシェイクを検知する


SwiftUIでPreviewを横向きにする

SwiftUIでPreviewを横向きにする方法です。


SwiftUIでNavigationBarを隠す

SwiftUIでNavigationBarを隠す方法です。


SwiftUIで全画面でSheetを表示する

SwiftUIで全画面でSheetを表示する方法です。


SwiftUIでSheetを表示する

SwiftUIでSheetを表示する方法です。


SwiftUIで複数行のPickerを作成する

SwiftUIで複数行のPickerを作成する方法です。


SwiftUIでListViewからそれぞれ別のViewに遷移する

SwiftUIでListViewからそれぞれ別のViewに遷移する方法です。


SwiftUIで画面遷移先のViewから遷移元のメソッドを呼び出す

SwiftUIで画面遷移先のViewから遷移元のメソッドを呼び出す方法です。


SwiftUIでリストのセルをタップしてアラートを表示させる

SwiftUIでリストのセルをタップするとアラートが表示させる方法です。 リストのセルをタップするとアラートが表示させています。


SwiftUIでリストを編集する

SwiftUIでリストを編集する方法です。


SwiftUIでViewModifierを使ってViewに影をつける

SwiftUIでViewModifierを使ってViewに影をつける方法です。 ViewModifierを使ってViewに影をつけています。


SwiftUIでFunctionBuilderを使ってViewに影をつける

SwiftUIでFunctionBuilderを使ってViewに影をつける方法です。 FunctionBuilderを使ってViewに影をつけています。


SwiftUIでText中の文字の太さや色を変える

SwiftUIで画像を丸く切り取り枠を付ける方法です。 150×200サイズに画像をリサイズして表示させています。 アスペクト比が異なる場合ははみ出た箇所を切り取って表示しています。


SwiftUIで続きを読む。。。ボタンがあるViewを実装する

SwiftUIで続きを読む。。。ボタンがあるViewを実装する方法です。


NavigationLinkを使用せずにプッシュ遷移する(.navigationDestination)

NavigationLinkを使用せずにプッシュ遷移する(.navigationDestination)方法です。


SwiftUIでアラートとシートを出し分ける

SwiftUIでアラートとシートを出し分ける方法です。 数字が入力されたらシートを表示し、数字以外が入力されたらアラートを表示しています。


SwiftUIでButton内の画像やテキストの色を変えない

SwiftUIでButton内の画像やテキストの色を変えない方法です。 .buttonStyle(PlainButtonStyle()) を設定することでボタンを押した時の色を変えずに済みます。


SwiftUIでAlertを出し分ける

SwiftUIでAlertを出し分ける方法です。 ボタン1が押されたらアラート1を、ボタン2が押されたらアラート2を表示してください


SwiftUIでAlertを表示する

SwiftUIでAlertを表示する方法です。 showingAlert 変数を true にすることでアラートを表示することができます。


SwiftUIでListのスタイルを変更する(plain)

SwiftUIでListのスタイルを変更する方法です。 listStyle に plain を設定しています。


SwiftUIでNavigationViewの戻るボタンを非表示にする

SwiftUIでNavigationViewの戻るボタンを非表示にする方法です。 navigationBarBackButtonHidden を false にすることで非表示にすることができます。


SwiftUIで画面遷移時に値を渡す

SwiftUIで画面遷移時に値を渡す方法です。 遷移先の画面に文字列を渡しています。


SwiftUIでListを使ってセクションごとに表示する

SwiftUIでListを使ってセクションごとに表示する方法です。 Listの listStyle を指定して表示方法を変えています。


SwiftUIでButtonが押されたら文字を変える

SwiftUIでButtonが押されたら文字を変える方法です。 @State が付与された変数を変えることで View 変えることができます。


SwiftUIでTabViewを使って画面を切り替える

SwiftUIでTabViewを使って画面を切り替える方法です。


SwiftUIでPickerを表示する

SwiftUIでPickerを表示する方法です。 Pickerを使いポケモンを表示しています。


SwiftUIでNavigationViewを使いラージタイトルを表示する

SwiftUIでNavigationViewを使いラージタイトルを表示する方法です。 navigationTitle でタイトルを設定し、navigationBarTitleDisplayMode でサイズを指定しています。


SwiftUIで画像を等間隔で横に並べる

SwiftUIで画像を等間隔で横に並べる方法です。 Spacerを使うことで等間隔にViewを並べることができます。


SwiftUIで画像を丸く切り取り枠を付ける

SwiftUIで画像を丸く切り取り枠を付ける方法です。 150×200サイズに画像をリサイズして表示させています。 アスペクト比が異なる場合ははみ出た箇所を切り取って表示しています。


SwiftUIで画像をリサイズして表示する(clip)

SwiftUIで画像をリサイズして表示させる方法です。 150×200サイズに画像をリサイズして表示させています。 アスペクト比が異なる場合ははみ出た箇所を切り取って表示しています。


SwiftUIで画像を画像を丸く切り取る

SwiftUIで画像を画像を丸く切り取る方法です。 150✖︎150サイズに画像をリサイズし、丸く切り取って表示させています。 アスペクト比が異なる場合ははみ出た箇所を切り取って表示しています。


SwiftUIで画像をリサイズして表示する(fit)

SwiftUIで画像をリサイズして表示させる方法です。 150×200サイズに画像をリサイズして表示させています。 アスペクト比が異なる場合は余白を赤色で表示しています。


SwiftUIでマークダウンを表示する

SwiftUIでマークダウンを表示する方法です。 マークダウンのパースには swift-markdown を使用しています。 また Header(#) と テキストのみに対応しています。


SwiftUIでPDFを表示する

SwiftUIでPDFを表示する方法です。 PDFView を利用して snorlax.pdf を表示させています。


SwiftUIでImageの色を反転させる

SwiftUIでImageの色を反転させる方法です。 .colorInvert() を追加することで色を反転させることができます。 SDWebImage/SDWebImageSwiftUI


Swiftでモーダル表示時にviewWillDisappearが呼ばれない

Swiftでモーダル表示時にviewWillDisappearが呼ばれないということが起きました。 以下のようにボタンを押したタイミングでフルスクリーンのモーダルが表示されるとします。 modalPresentationStyle を .fullScreen にすると viewWillDisappear と viewDidAppear がモーダル表示のタイミングで呼ばれますが、.overFullScreen にすると viewDidAppear しか呼ばれませんでした。 参考: iOSにおけるモーダル表示まとめ


SwiftUIでTODOアプリを作成する

SwiftUIでTODOアプリのサンプルを作成してみました。 Add Scheduleボタンを押すと予定入力画面が表示されます。 日付を押すと予定一覧画面が表示され、予定の一覧を確認することができます。


SwiftUIでカレンダーを作成する

SwiftUIでカレンダーを作成する方法です。 VStack と HStack を組み合わせて作成しました。 2023年2月24日追記 iOS16からUICalendarViewという便利なものが用意されたのでそれを使った方が良いかもしれません。 こちら の記事です。


SwiftUIでアラートのメッセージを出し分ける

SwiftUIでアラートのメッセージを出し分ける方法です。 アラート表示前にアラートメッセージを変更しています。


SwiftUIでローカル通知を送信する

SwiftUIでローカル通知を送信する方法です。 ローカル通知であればサーバーを用意しなくてもプッシュ通知を送信することができます。 参考: 【SwiftUI】通知機能の実装方法!ローカル通知とリモート通知の違い


Swiftのasync,awaitを使ってAPIと画像を取得し、全てが揃ってから表示する

Swiftのasync,awaitを使ってAPIと画像を取得し、全てが揃ってから表示する方法です。


Swiftのasync,awaitを使ってAPIをフェッチする

Swiftのasync,awaitを使ってAPIをフェッチする方法です。 従来のClosureを使った方法とasyncを使った方法です。


SwiftUIでObservableObjectの@publishedなプロパティとBindingをする

SwiftUIでObservableObjectの@publishedなプロパティとBindingをする方法です。 ここでは AddItemViewState まで ContentView の items をバケツリレーしています。


iOSのファイルアプリ(UIDocumentPickerViewController)を開いてドキュメントフォルダに保存したファイルを開く

iOSのファイルアプリ(UIDocumentPickerViewController)を開いてドキュメントフォルダに保存したファイルを開く方法です。 info.plist にファイルアプリでドキュメントディレクトリを開けるように Supports opening documents in place と Application supports iTunes file sharing を追加し、どちらも YES に設定します。


SwiftUIで画像をピンチで拡大する(UIImageView + UIScrollView)

SwiftUIで画像をピンチで拡大する方法です。 UIImageViewとUIScrollViewを使って画像をピンチで拡大します。 他にはこのような方法があります。 SwiftUIで画像をピンチで拡大する(MagnificationGesture) SwiftUIで画像をピンチで拡大する(PDFView)


SwiftUIで画像をピンチで拡大する(PDFView)

SwiftUIで画像をピンチで拡大する方法です。 画像をピンチで拡大します。 他にはこのような方法があります。 SwiftUIで画像をピンチで拡大する(MagnificationGesture) SwiftUIで画像をピンチで拡大する(UIImageView + UIScrollView) 参考: Isn’t there an easy way to pinch to zoom in an image in Swiftui?


SwiftUIで画像をピンチで拡大する(MagnificationGesture)

SwiftUIで画像をピンチで拡大する方法です。 MagnificationGestureを使った方法で画像をピンチで拡大します。 ただこの方法ではドラッグすることができないので、他の方法にする必要があります。 他にはこのような方法があります。 SwiftUIで画像をピンチで拡大する(PDFView) SwiftUIで画像をピンチで拡大する(UIImageView + UIScrollView)


SwiftUIでMapViewを使い複数の位置情報を選択する

SwiftUIでMapViewを使い複数の位置情報を選択する方法です。 addボタンを押した位置情報を記録します。listボタンを押すとその位置情報の一覧を表示します。


SwiftUIでさまざまなデバイスのプレビューを確認する

SwiftUIでさまざまなデバイスのプレビューを確認する方法です。 まず以下のコマンドでデバイスの一覧を確認します。 デバイス名は正確に入力する必要があります。 $ xcrun simctl list devicetypes == Device Types == iPhone 4s (com.apple.CoreSimulator.SimDeviceType.iPhone-4s) iPhone 5 (com.apple.CoreSimulator.SimDeviceType.iPhone-5) iPhone 5s (com.apple.CoreSimulator.SimDeviceType.iPhone-5s) iPhone 6 Plus (com.apple.CoreSimulator.SimDeviceType.iPhone-6-Plus) iPhone 6 (com.apple.CoreSimulator.SimDeviceType.iPhone-6) iPhone 6s (com.apple.CoreSimulator.SimDeviceType.iPhone-6s) iPhone 6s Plus (com.apple.CoreSimulator.SimDeviceType.iPhone-6s-Plus) iPhone SE (1st generation) (com.apple.CoreSimulator.SimDeviceType.iPhone-SE) iPhone 7 (com.apple.CoreSimulator.SimDeviceType.iPhone-7) iPhone 7 Plus (com.apple.CoreSimulator.SimDeviceType.iPhone-7-Plus) iPhone 8 (com.apple.CoreSimulator.SimDeviceType.iPhone-8) iPhone 8 Plus (com.apple.CoreSimulator.SimDeviceType.iPhone-8-Plus) iPhone X (com.apple.CoreSimulator.SimDeviceType.iPhone-X) iPhone Xs (com.apple.CoreSimulator.SimDeviceType.iPhone-XS) iPhone Xs Max (com.apple.CoreSimulator.SimDeviceType.iPhone-XS-Max) iPhone Xʀ (com.apple.CoreSimulator.SimDeviceType.iPhone-XR) iPhone 11 (com.


iOS15でPickerを横に並べるとタップ領域が重なってしまう

iOS15でPickerを横に並べるとタップ領域が重なってしまう不具合に悩まされたのでその忘備録です。 以下の様なコードをiOS15の実機で実行し、左側の行を動かそうとすると右側の行が動いてしまいます。iOS14やシミュレーターでは問題なく動作します。 Pickerを複数並べると.clip()を使ってもタップ領域が広がってしまうって問題です! View Hierarchyを見たところ、タップ領域がclipされていないことが原因かと思われます。 Apple Developer Technical Support に助けを求めたところ「現時点では回避策がない既知の問題です。」と言われたので UIViewRepresentable を使って自分で作るしかなさそうです。


SwiftUIでMapViewの中央に十字を用意し、その中央の座標を取得する

SwiftUIでMapViewの中央に十字を用意し、その中央の座標を取得する方法です。 MapViewが動いたタイミングでラベルの文字列が更新されます。


SwiftUIでPHPickerViewControllerを使って画像を選択する

SwiftUIでPHPickerViewControllerを使って画像を選択する方法です。 ImagePickerというクラスを使って実現しました。


SwiftUIでスライダーとスクロールを連動させる

SwiftUIでスライダーとスクロールを連動させる方法です。 スライダーの値を変えることでScrollViewのスクロールを動かしています。


SwiftUIでカメラを使う

SwiftUIでカメラを使う方法です。 録画を可能にする CameraView を作成しそれを SwiftUI 側で呼び出すようにします。 SwiftUIでカメラを使ったり、写真を保存するには色々とプライバシーの許可を Info.plist に設定する必要があります。 [Swift] AVFoundation による動画撮影の設定: カメラ種類 / ズーム / 録画時間 / 画質](https://superhahnah.com/swift-avcapture-settings/)


iOSで実機ビルドだと動けどTestFlightから配信すると動かない

iOSアプリ開発中に実機ビルドだと動けどTestFlightから配信すると動かない。ということがありました。 以下の記事を参考にリリーズビルド時も最適化を無効化したら動くようになりました。 App crashes in Release build but not in debug Xcodegen を使っている場合は settings の base に以下を追加してあげます。 SWIFT_OPTIMIZATION_LEVEL: -Onone


複数の型を持つJSONをemumでDecodeする

複数の型を持つ JSON を enum を使って Decode する方法です。 とある API を叩くと JSON が返ってきますが、その中身がポケモンなのかトレーナーなのかジムリーダーなのかわかりません。 以下のコードのように enum の Character の中に Pokemon, GymLeader, Trainer を定義することで、どのような JSON が来ても Decode できるようになります。


自分で定義したStructをUserDefaultsに保存する

自分で定義したStructをUserDefaultsに保存する方法です。 そのままでは保存することができないので、一度 JSONEncoder で Data に保存してから保存します。


Identifiableに適合していないStructでListを使う

Identifiableに適合していないStructでListを使う方法です。 id でプロパティユニークとなるプロパティを指定することで List で使うことができます。


SwiftUIのTabViewのタブをコードから動的に切り替える

SwiftUIのTabViewのタブをコードから動的に切り替える方法です。 コードで動的にタブを切り替える方法です 参考: Programmatically change to another tab in SwiftUI


iOSでバージョンとビルド番号を取得する

iOSでバージョンとビルド番号を取得する方法です。 バージョンとビルド番号を文字列で取得します。 オプショナルで取得することになるので、if let でアンラップしてます。


SwiftUIでListにButtonを設定してパラメーターの違う画面に遷移する

SwiftUIでListにButtonを設定してパラメーターの違う画面に遷移する方法です。 詳細ページに遷移するような使い方を想定しています。


SwiftUIで少しカスタマイズしたActivityIndicatorを表示する

SwiftUIで少しカスタマイズしたActivityIndicatorを表示する方法です。背景色をつけたActivityIndicatorを表示したり隠したりしています。


Swiftでデフォルト引数を使う

Swiftでデフォルト引数を使う方法です。 favorite 関数に引数を渡さず呼び出すと "I love Snorlax が返り、任意の名前を渡すとその値が使われます。


SwiftUIでActivityIndicatorを表示する

SwiftUIでActivityIndicatorを表示する方法です。 ロード中などのくるくるするやつを表示したり隠したりしています。


SwiftUIでUIActivityViewControllerを表示する

SwiftUIでUIActivityViewControllerを表示する方法です。 ボタンを押すと URL を共有するシートを表示します。 参考: Showing ‘UIActivityViewController’ in SwiftUI


SwiftUIでSearchBar(TextField)にクリアボタンをつける

SwiftUIでSearchBar(TextField)にクリアボタンをつける方法です。 TextFiled に文字を入力するとポケモンを検索します。 そして右側のボタンを押すと TextField がクリアされます。 参考サイト SwiftUI: Add ClearButton to TextField


SwiftUIでSearchBar(TextField)を使って検索する

SwiftUIでSearchBar(TextField)を使って検索する方法です。 TextFiled に文字を入力するとポケモンを検索します。


SwiftUIのListの中にボタンを複数設置する

SwiftUIのListの中にボタンを複数設置する方法です。 buttonStyle(PlainButtonStyle()) を設定することできました。 参考サイト SwiftUI pick a value from a list with ontap gesture


SwiftUIのListでSpacerの部分にもタップ判定をつける

SwiftUIのListでSpacerの部分にもタップ判定をつける方法です。 .contentShape(Rectangle()) を設定することでタップ範囲を広げています。 参考サイト SwiftUI pick a value from a list with ontap gesture


SwiftUIでListをEditModeにして並び替える

SwiftUIでListをEditModeにして並び替える方法です。 UITableViewのEditModeのようにして並び替えることができます。 Listの中にforを定義する必要があります。最初ハマりました。


SwiftUIでシートを表示し、プッシュ遷移後にシートを閉じる

SwiftUIでシートを表示し、プッシュ遷移後にシートを閉じる方法です。 遷移後のシートでもisPresentedの情報を保持するのがポイントです。


SwiftUIで初めの画面に遷移する(popToRootViewController)

SwiftUIで初めの画面に遷移する(popToRootViewController)方法です。 isDetailLink がポイントです。


Swiftで10進数を2進数に変換する

Swiftで10進数を2進数に変換する方法です。 TextFieldに数字を入力し、変換ボタンを押すと2進数に変換されます。


SwiftUIのTextFieldで表示するキーボードを指定する

SwiftUIのTextFieldで表示するキーボードを指定する方法です。 keyboardType を指定することで表示するキーボードの種類を設定することができます。


SwiftでMKMapViewに線を引く

SwiftでMKMapViewに線を引く方法です。 以下の例では大阪、松本、東京で線を引いています。


SwiftUIでButtonを有効にしたり無効にしたりする

SwiftUIでButtonを有効にしたり無効にしたりする方法です。 Toggleを押すとボタンが有効になったり、無効になったりします。


SwiftUIでViewを横スクロールで表示する

SwiftUIでViewを横スクロールで表示する方法です。 SwiftUIだと簡単に実装できて良いですね!!


QGridを使ってCollectionViewを実装する

QGridを使ってCollectionViewを実装する方法です。 iOS13のSwiftUIではCollectionViewに相当するものがありません。 QGridを使うことでCollectionViewに似たものを実装することができます。


Swiftでオンライン上のファイルを再生する

Swiftでオンライン上のファイルを再生する方法です。 簡単に実装できました。ただエラーハンドリングができないのが弱点です。


SwiftUIでアラートを入れ子にして使うことができない

SwiftUIでアラートを入れ子にして使うことができなかったのでそのメモです。 以下のコードの様に HStack の中に VStack を入れ、それぞれに .alert を使うと内側の .alert がうまく動かなかったです。 .alert は入れ子にしない方が良さそうです。


iOSでGoogle-Mobile-Ads-SDKの8系が入らない

iOSでGoogle-Mobile-Ads-SDKの8系が入らない時の対処法です。 Firebase/adMob を外したらうまくいきました。 参考: pods使うとadmob sdkのバージョンは7.69になるなぁ。最新の8.1入れたかったんだけどな。


SwiftUIでボタンを押すとポップアップを表示する

SwiftUIでボタンを押すとポップアップを表示する方法です。 以下の例ではボタンを押すとアラート(中身はView)を表示しています。


SwiftUIでBMIを計算し、結果を別のViewで表示する

SwiftUIでBMIを計算し、結果を別のViewで表示する方法です。 身長と体重を入力し、計算ボタンを押すことで計算したBMIを表示しています。 ただ上の例では bmi と showingSheet の二つのプロパティが必要です。 新しく ContentActionSheetを定義する必要がありますが、以下の方法だとプロパティの数を減らしたりenumの種類によってシートの出し分けをすることができます。


@Stateと@Bindingの使い分け

@Stateと@Bindingの使い分けについです。 @State のついた変数を変更することでViewにその変更が反映されます。 以下の例ではボタンを押すことで 変数textの値を変えています。 変数textの値を変えることでその変更が反映され、文字列が変わります。 @Binding は親のViewのプロパティを子のViewで変えたい時に使います。 ContentViewでは変数textの値を表示しています。 ChangeTextボタンを押してSecondViewに遷移し、そこで値を変えると親である ContentView のプロパティも変更され、画面にその変更が反映されています。


SwiftUIで複数のモーダルをEnumで出し分ける

SwiftUIで複数のモーダルをEnumで出し分ける方法です。 enumを使うことでスッキリと書くことができました。 iOS13では使えないので気をつけてください。


SwiftUIでフルスクリーンモーダルを表示する(iOS14以上)

SwiftUIでフルスクリーンモーダルを表示する方法です。(iOS14以上) いままでSwiftUIでフルスクリーンのモーダルを表示するのは大変でしたが、iOS14からはこの方法で表示することができるようになります。お手軽ですね。 iOS13でフルスクリーンモーダルを表示させたい場合はこの記事をご参照ください。 SwiftUIでフルスクリーンモーダルを表示する 参考: How to present a full screen modal view using fullScreenCover()


SwiftUIでモーダルを表示する時に値を渡す

SwiftUIでモーダルを表示する時に値を渡す方法です。 TextFieldでname変数に文字列を入力します。その入力した文字列をPokemonView に渡して表示しています。


Swiftで文字列を圧縮して保存し、そのデータを読み取る

Swiftで文字列を圧縮して保存し、そのデータを読み取る方法です。 zlib というアルゴリズムで文字列を圧縮し、保存しています。 Java の Deflater, Inflater に相当する方法ですが、header、チェックサムの情報が抜けている生のデータが保存されるので気をつける必要があります。 static void saveCompressedData() { try { // Encode a String into bytes String text = "hello"; byte[] data = text.getBytes(StandardCharsets.UTF_8); // Compress the bytes ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); DeflaterOutputStream outputStream = new DeflaterOutputStream(byteArrayOutputStream); outputStream.write(data); outputStream.finish() String path = "/Users/kabigon/Desktop/data.data"; try (FileOutputStream fos = new FileOutputStream(path)) { fos.write(byteArrayOutputStream.toByteArray()); } System.out.println("----------------------"); System.out.println("Save Completed!!"); System.out.println(String.format("Path: %s", path)); System.out.println("----------------------"); } catch (Exception e) { e.


SwiftUIでAVAudioPlayerNodeで音楽を再生し、再生終了を検知する

SwiftUIでAVAudioPlayerNodeで音楽を再生し、再生終了を検知する方法です。 AVAudioPlayer は Delegate で再生終了を検知しますが、AVAudioPlayerNodeは再生終了時に呼ばれるハンドラーが用意されているのでそちらを使います。 参考: AVAudioEngine & AVAudioPlayerNode didFinish method like AVAudioPlayer


SwiftUIでAVAudioPlayerで音楽を再生し、再生終了を検知する

SwiftUIでAVAudioPlayerで音楽を再生し、再生終了を検知する方法です。 SwiftUIは struct を使うので AVAudioPlayerDelegate に準拠することができません。 そのため、ViewModel を作成し、SwiftUI(View)から呼び出してあげるます。 参考: AVAudioPlayerDelegate SwiftUI


SwiftUIを使ったTODOアプリのサンプル

SwiftUIを使ったTODOアプリのサンプルコードです。 InputView で入力した TODOは ContentView に表示されます。


AVAudioPlayerNodeを使って音楽の再生、一時停止、再生速度変更、ピッチ変更、ボリューム変更を行う

AVAudioPlayerNodeを使って音楽の再生、一時停止、再生速度変更、ピッチ変更、ボリューム変更を行う方法です。 AVAudioPlayerNodeはAVAudioPlayerではできないようなことができます。 たとえばピッチの変更などAVAudioPlayerでは実現することはできないので、AVAudioPlayerNodeを使う必要があります。


AVAudioPlayerを使って音楽の再生、一時停止、停止、ボリューム変更、再生速度変更を行う

AVAudioPlayerを使って音楽の再生、一時停止、停止、ボリューム変更、再生速度変更を行う方法です。 AVAudioPlayerを使うと簡単に音楽の再生などに関することするができます。 ただ AVAudioPlayer にできることは限られており、より複雑な操作をするためには AVAudioPlayerNode を使う必要があります。


SwiftUIでImageを長押しするとContextMenuを表示する

SwiftUIでImageを長押しするとContextMenuを表示する方法です。 アイコンが表示されているImageを長押しするとContextMenuが表示されます。 少しのコードを書くだけでリッチなUIが実現できて便利です。


SwiftUIでMapを使う。Mapにピンを立てる

SwiftUIでMapを使う。Mapにピンを立てる方法です。 UIViewRepresentableを使って MKMapViewをSwiftUIで表示しています。


SwiftUIでViewの上にViewを重ねる

SwiftUIでViewの上にViewを重ねる方法です。 Imageの上に半透明に黒いTextを重ねています。


SwiftUIで端末のシェイクを検知する

SwiftUIで端末のシェイクを検知する方法です。 端末をシェイクすると Text 内の文字が変わります。 ReactNativeは端末をシェイクするとデバッグメニューが出てくるのが面白いです。


SwiftUIでAppStorageを使ってUserDefaultの値を監視する

SwiftUIでAppStorageを使ってUserDefaultの値を監視する方法です。 UserDefaultが変更されると画面が再描画されます。


SwiftUIでListの中に複数のNavigationLinkを設置する

SwiftUIでListの中に複数のNavigationLinkを設置する方法です。 素直に実装すると画面遷移が暴発してしまいます。 それを修正するために List のタップジェスチャーを無効化したりする必要がありました。


SwiftUIでViewの周りに影をつける

SwiftでUIViewの周りに影をつける方法です。 ImageのViewの周りに影をつけています。 shadowOffset で影の位置を移動させることができ、サンプルコードでは影を右下に移動させています。


SwiftUIでButton内の画像やテキストの色を変えない

SwiftUIでButton内の画像やテキストの色を変えない方法です。 .buttonStyle(PlainButtonStyle()) ではフルーツの一覧を表示しています。 フルーツが表示されたセルを押すと SecondView を設定することで実現できました。


SwiftUIで画面遷移時に値を渡す

SwiftUIで画面遷移時に値を渡す方法です。 ContentView ではフルーツの一覧を表示しています。 フルーツが表示されたセルを押すと SecondView に遷移し、選択されたセルのフルーツ名が表示されます。


GithubのAPIを叩き、SwiftUIでリポジトリを取得する。一番最後までいくと追加で取得しIndicator を表示する

GithubのAPIを叩き、リポジトリを取得する。一番最後までいくと追加で取得しIndicator を表示する方法です。 Infinite List Scroll with SwiftUI and Combine を参考にさせていただきました。


GithubのAPIを叩き、SwiftUIでリポジトリの情報をリストに表示する。一番下までスクロールされたら追加する

GithubのAPIを叩き、リポジトリの情報をリストに表示する。一番下までスクロールされたら追加する方法です。 Infinite List Scroll with SwiftUI and Combine を参考にさせていただきました。


GithubのAPIを叩き、SwiftUIでリポジトリの情報をリストに表示する(Combine)

GithubのAPIを叩き、リポジトリの情報をリストに表示する方法です。 Infinite List Scroll with SwiftUI and Combine を参考にさせていただきました。


GithubのAPIを叩き、SwiftUIでリポジトリの情報をリストに表示する(Closure)

GithubのAPIを叩き、SwiftUIでリポジトリの情報をリストに表示する方法です。 Infinite List Scroll with SwiftUI and Combine を参考にさせていただきました。


SwiftUIでViewを横に等間隔で横に並べる

SwiftUIでViewを横に等間隔で横に並べて表示するほうほうです。 アイコンを等間隔で表示したりするときにつかいました。


SwiftUIで画像を丸く切り取り、枠を付ける

SwiftUIで丸い枠に合わせて画像を丸く切り取り、枠を付ける方法です。 アイコンの表示する箇所などによく使います。


SwiftUIで画像をリサイズして表示(clip)

SwiftUIで画像をリサイズして表示します。 アスペクト比が異なる場合ははみ出た箇所を切り取って表示します。


SwiftUIで画像をリサイズして表示(fit)

SwiftUIで画像をリサイズして表示します。 アスペクト比が異なる場合は余白が赤色で表示されます。


Buttonを押すとTextの文字が変わる

SwiftUIでButtonが押されたら文字の色を変える方法です。 ボタンが押されたタイミングで @State var text を更新します。


SwiftUIでアラートとシートを出し分ける

SwiftUIでアラートとシートを出し分ける方法です。 TextField に入力された文字列が Double に変換できるかチェックします。 もし Double に変換できるのであればシートを表示し、もし Double に変換できないのであればアラートを表示します。


Xcodeで行を入れ替える

Xcodeで行を入れ替える方法です。 command + option + [ でカーソルのある行を上に持ってくることができます。 また command + option + ] でカーソルのある行を下に持ってくることができます。 ![Format]](1.gif)


Xcodeでコードをフォーマットする

Xcodeでコードをフォーマットする方法です。 command + a でコードを全て選択し、control + i でコードをフォーマットすることができます。


SwiftUIのTextFieldで編集中と編集完了を検知する

SwiftUIのTextFieldで編集中と編集完了を検知する方法です。 UIKit よりも少ないコードで実現できている気がします。


SwiftUIのPreviewを横向きにする

SwiftUIのPreviewを横向きにする方法です。 Previewのサイズを変更することで実現しました。 Landscape Right, Landscape Left にチェックを入れアプリを横向きにします。 Previewのサイズを端末のサイズに変更します。


Buttonからプッシュ遷移をする(NavigationLinkを無効にする)

Buttonからプッシュ遷移をする方法です。 この方法であれば、NavigationLink を擬似的に無効にすることができます。


SwiftUIでNavigationBarを隠す

SwiftUI で NavigationBar を隠す方法です。 .navigationBarHidden(true) を設定すると隠すことができます。 理由は不明ですが、空文字で仮のタイトルを設定する必要がありました。


よくあるチュートリアル画面をUIPageViewControllerとSwiftUIで作る

UIPageViewControllerとSwiftUIでよくあるチュートリアル画面を作ります。 画面をスワイプすると次の画面が表示されます。


SwiftUIでUITestを動かす

SwiftUIでUITestを動かす方法です。 UIKit の時と違って sleep を入れないと良い感じに動かなかったです。 State が変わると際レンダリングが走るせいでしょうか?


SwiftUIでText中の文字の太さや色を変える

SwiftUIでText中の文字の太さや色を変える方法です。 SwiftUI で Text を結合できるのが面白いです。


SwiftUIで続きを読む。。。ボタンがあるViewを実装する

SwiftUIで続きを読む。。。ボタンがあるViewを実装する方法です。 背景を透明色にし、そのサイズを PreferenceKey で取得することで実現しています。


SwiftUIで閉じることができないモーダルを表示する

SwiftUIで閉じることができないモーダルを表示する方法です。 以下の記事の応用です、UIKit を使わないでもできるようになって欲しいです。 SwiftUIでフルスクリーンモーダルを表示する


シミュレーターのスクリーンショットを影無しで撮影する(ツールバー無しで撮影する)

シミュレーターのスクリーンショットを影無しで撮影する(ツールバー無しで撮影する)方法です。 command + shift + 4 でスクリーンショットの撮影モードにしたあとに、スペースで撮影対象となる画面を選択し、クリックすることでスクリーンショットを撮ることができます。 そのときに option を押ながら撮影することで影無しでスクリーンショットを撮ることができます。 そして、ツールバーを画像編集ツールで取り除けば、ツールバー無しのスクリーンショット画像が手に入ります。 通常の方法で撮ったスクリーンショット 影無しで撮ったスクリーンショット


SwiftUIでモーダルからフルモーダルを表示する

SwiftUIでモーダルからフルモーダルを表示する方法です。 以下の記事の改良版?です。 SwiftUIでフルスクリーンモーダルを表示する


SwiftUIでアプリ起動時に画面を遷移させる

SwiftUIでアプリ起動時に画面を遷移させる方法です。 登録の導線で途中離脱したらその途中から再開させるようなUXを実現させようとしました。 NavigationLink の isActive を使って遷移していますが、遅延時間を設定しないとアプリの挙動がおかしくなってしまうので気をつけてください。


FunctionBuilderを使ってViewに影をつける

FunctionBuilderを使ってViewに影をつける方法です。 FunctionBuilderとViewModifier、どっちを使うか迷う時が良くあります。 関連してこちらもどうぞ。 ViewModifierを使ってViewに影をつける


ViewModifierを使ってViewに影をつける

ViewModifierを使ってViewに影をつける方法です。 FunctionBuilderとViewModifier、どっちを使うか迷う時が良くあります。 関連してこちらもどうぞ。 FunctionBuilderを使ってViewに影をつける


SwiftUIでフルスクリーンモーダルを表示する

SwiftUIでフルスクリーンモーダルを表示する方法です。 SwiftにもっとAPI増えて欲しいです。


SwiftUIでNavigationViewのタイトルやテーブルビューの背景を変える

SwiftUIでNavigationViewのタイトルやテーブルビューの背景を変える方法です。 TableView と UITextView の appearance を変更しました。


SwiftUI で文字列中にタップ可能なリンクを追加する

SwiftUI で文字列中にタップ可能なリンクを追加するを作成する方法です。 UIViewRepresentable と UITextView を使って実現しました。 Reference: UITextViewにタップ可能なリンクを挿入する


SwiftUIでUICollectionViewのようにViewを並べる

SwiftUI で UICollectionView のように表示する方法です。 Q-Mobile/QGrid というライブラリを使うと簡単です。 QGrid を参考にしながら書いてみました。 参考: Q-Mobile/QGrid


SwiftUIでFirestoreの画像を表示する

SwiftUI で Firestore の画像を表示する方法です。 UIImage は SDWebImage を使えば簡単に表示できますが、SwiftUI ではそれができません。 SDWebImage/SDWebImageSwiftUIを使って以下のように書いてみました。 もっと良い書き方がある気がします、これだとトークンも含めてキャッシュされちゃうような。。。 参考: iOS でファイルをダウンロードする SDWebImage/SDWebImageSwiftUI


SwiftUIのToggleの変更を検知する

SwiftUIのToggleの変更を検知し、print 文を実行します。 参考: How can I trigger an action when a swiftUI toggle() is toggled?


SwiftUIで複数行のPickerを作成する

UIPickerView のような複数行の Picker を作成する方法です。 UIPickerView と使い勝手がかなり異なり、戸惑いました。 参考: Multi-Component Picker (UIPickerView) in SwiftUI 追記 iOS15では compositingGroup を追記する必要があります。


SwiftUIのPickerでLabelを表示しない

SwiftUIのPickerでLabelを表示しない方法です。 labelsHidden を設定することで可能です。 参考: How to hide the label of a Picker, Stepper, Toggle, and more using labelsHidden()


SwiftUIでPicker を表示する

SwiftUI で Picker を表示するサンプルです。 複数行の場合はこちらです。 SwiftUIで複数行のPickerを作成する 参考: Is there a way to call a function when a SwiftUI Picker selection changes?


SwiftUI で画面遷移先の View から遷移元のメソッドを呼び出す

SwiftUI で画面遷移先の View から遷移元のメソッドを呼び出すサンプルです。 delegate を使ったのですが、Combine で書いた方がよいかもしれません。


SwiftUI でアラートを表示する

SwiftUI でアラートを表示する方法です。 UIAlertController とはかなり書き方が異なります。 Property Wrapper の @State がまだ慣れません。


SwiftUIでリストのセルをタップするとアラートが表示される方法

SwiftUI でリストのセルをタップするとアラートが表示される方法です。 まだまだ SwiftUI に慣れません。


SwiftUIでリストを編集する

SwiftUIでリストを編集する方法です。 UITableView よりも短いコードで書くことができました。 参考: How to enable editing on a list using EditButton


TabViewを使って画面を切り替える(SwiftUI)

TabViewを使って画面を切り替えるサンプルです。 かなり簡単に書くことができますね。 TabView - SwiftUI | Apple Developer Documentation


ListViewからそれぞれ別のViewに遷移する(SwiftUI)

設定画面のようにListViewからそれぞれ別のViewに遷移する方法が少し手間でした。 もっと良い方法がある気がします。。。