Swift・iOS

Swiftを中心に学んだことを記録に残すブログです。技術に関係ない記事もたまに書いています。

SwiftUI

【SwiftUI】通知を画面上部からアニメーションして表示する

はじめに 本題 サンプルイメージ 開発環境 全体の実装 おわりに 参考 はじめに 【SwiftUI】ポップアップ(オーバーレイ)を表示する - Swift・iOSの実装を修正して、UIPasteboardの通知やGame Centerのログイン通知、着信音オン/オフのような、画面上部から…

【SwiftUI】カウントアップのアニメーション

はじめに 本題 サンプルイメージ 開発環境 全体の実装 ContentView.swift ContentViewModel.swift おまけ:幅広い数字に対応する ※追記:アニメーション時の数字の横振れに対応する おわりに 参考 はじめに 【Combine】Timerの処理をCombineを使って置き換える…

【SwiftUI】ポップアップ(オーバーレイ)を表示する

はじめに 開発環境 サンプルイメージ 実装 全体の実装 おまけ おわりに 参考 はじめに "withAnimation(_:_:)"の挙動を確認したかったので、ポップアップを表示するサンプルを作ってみました。 開発環境 macOS Big Sur 11.5.1 Xcode 12.5.1 Swift 5.4.2 サン…

【SwiftUI】StoreKitを使ってレビュー依頼をする

はじめに サンプルイメージ 開発環境 実装 SampleApp.swift InitialView.swift ProcessCompletedView.swift UserDefaultsKeys.swift おわりに 参考 はじめに StoreKitを使ってユーザーへアプリのレビュー依頼をする実装について、Appleの公式ドキュメント"Re…

【SwiftUI】外部リンクを開く実装

はじめに 開発環境 本題 おわりに 参考 はじめに 外部リンクを開く実装についてメモ。 開発環境 macOS Big Sur 11.4 Xcode 12.5.1 Swift 5.4.2 本題 "open(_:options:completionHandler:)"を使って外部リンクを開く処理を実装すると以下のようになる。 ※参考…

【SwiftUI】画像URLから取得した画像を表示する

はじめに サンプルイメージ 開発環境 実装 ContentView.swift ImageView.swift ImageLoader.swift ImageCache.swift IndicatorView.swift おわりに 参考 はじめに 以下のリポジトリを参考に、画像URLから取得した画像を表示し、画像をキャッシュする実装を試…

【SwiftUI】EnvironmentValuesに独自のEnvironmentValueを追加する

はじめに 開発環境 実装 おわりに 参考 はじめに EnvironmentValuesを拡張して独自のEnvironmentValueを追加する方法について試したので記事に残しておきます。 開発環境 macOS Big Sur 11.3.1 Xcode 12.5 Swift 5.4 実装 【Swift】NSCacheを使って画像をキ…

【SwiftUI】ScrollViewReaderを使ってScrollViewの特定の行にスクロールする

はじめに 開発環境 サンプルイメージ 実装 おわりに 参考 はじめに ScrollViewReaderを使って、特定の行にスクロールする実装を試したので記事に残します。 開発環境 macOS Big Sur 11.3.1 Xcode 12.5 Swift 5.4 サンプルイメージ 実装 ScrollViewReaderでSc…

【SwiftUI】LazyVGridを使ってUICollectionViewのようなUIを表現する

はじめに 開発環境 本題:LazyVGridでグリッドデザインを表現する 並べ方に関して アイテムを詰めて並べる 1行あたりのアイテム数を指定して並べる 余白の設定に関して 行間の余白を設定 LazyVGridの上下左右の余白を設定 画面遷移に関して おわりに 参考 は…

【SwiftUI】エラー "Extra arguments at positions #11 ... in call" "Extra argument in call"の原因

はじめに 開発環境 本題 エラーが発生するコード なぜエラーが発生する? エラーの解消方法 エラー解消後のコード おわりに 参考 はじめに 表題のエラーに関して調べた内容のメモ。 開発環境 macOS Big Sur 11.2.3 Xcode 12.4 Swift 5.3.2 本題 エラーが発生…

【SwiftUI】WKWebView内のページの読み込み状況をUIProgressViewで表示する

はじめに サンプルイメージ 開発環境 本題 実装方針 実装 WebView.swift ContentView.swift(WebViewの使用例) おわりに 参考 はじめに WKWebViewの読み込み状況をUIProgressViewで表示する実装について試したので、記事に残します。 サンプルイメージ 開発…

【SwiftUI】Menuを表示する

はじめに 開発環境 サンプルイメージ 実装 おわりに 参考 はじめに iOS 14.0から使えるようになったMenuを試したので記事に残します。 開発環境 macOS Big Sur 11.2.3 Xcode 12.4 Swift 5.3.2 サンプルイメージ 実装 import SwiftUI struct ContentView: Vie…

【SwiftUI】アプリを開いた時/閉じる時に処理を実行する(ライフサイクルがSwiftUI Appの場合)

はじめに 開発環境 本題 実装に関して 気になった点 おわりに 参考 はじめに アプリを開いた時/閉じる時に処理を実行する方法に関してメモ。 開発環境 macOS Big Sur 11.2.3 Xcode 12.4 Swift 5.3.2 本題 実装に関して ScenePhaseを使用することで表示状態を…

【SwiftUI】WKWebViewの戻る/進む/再読み込みの機能を実装する

はじめに 開発環境 実装 WebView.swift ContentView.swift(WebViewの使用例) おわりに 参考 はじめに 【SwiftUI】WKWebViewを使えるようにする - Swift・iOSに記載した実装内容を修正して、WKWebView用のボタン(戻る/進む/再読み込み)を設置してみたので…

【Swift】WKWebViewで表示しているページのURLとタイトルを取得する

はじめに 開発環境 本題 該当のメソッド SwiftUIでの実装例 おわりに 参考 はじめに 【SwiftUI】WKWebViewを使えるようにする - Swift・iOSの続きです。今回はWKWebViewで表示しているページのURLとタイトルを取得する方法について記載します。 開発環境 mac…

【SwiftUI】"Fatal error: No ObservableObject of type ~ found. A View.environmentObject(_:) for ~ may be missing as an ancestor of this view."の解決方法

はじめに 開発環境 本題 エラー発生時の状況 エラーの解決方法 おわりに 参考 はじめに 表題のエラーに関して、発生時の状況と解決方法を記事に残します。 開発環境 macOS Big Sur 11.2.3 Xcode 12.4 Swift 5.3.2 本題 エラー発生時の状況 sheetでEnvironmen…

【SwiftUI】Listの行を並び替える

はじめに 開発環境 イメージ 実装 おわりに 参考 はじめに Listの行を並び替える実装について記事に残します。 開発環境 macOS Big Sur 11.2.3 Xcode 12.4 Swift 5.3.2 イメージ 実装 NavigationViewにEditButtonを追加し、"onMove(perform:)"を使うと行を並…

【SwiftUI】Listの行を削除する方法(スワイプで削除/選択して削除/複数の行を同時に削除)

はじめに 開発環境 実装 スワイプで行を削除したい場合 選択して行を削除したい場合 複数の行を同時に削除したい場合 おわりに 参考 はじめに Listの行を削除する方法についてまとめました。 開発環境 macOS Big Sur 11.2.3 Xcode 12.4 Swift 5.3.2 実装 ス…

【SwiftUI】Listの各行ごとに別のモーダルビュー(sheet)を表示する

はじめに 開発環境 サンプルイメージ 実装 SettingView.swift SettingViewModel.swift SceneDelegate.swift おわりに 参考 はじめに 【SwiftUI】ListからNavigationLinkで画面遷移する - Swift・iOSの続きです。今回はListからモーダルビューへ画面遷移する…

【SwiftUI】ListからNavigationLinkで画面遷移する

はじめに 開発環境 サンプルイメージ 実装 SettingView.swift SampleView.swift SceneDelegate.swift おわりに 参考 はじめに 【SwiftUI】セクションごとに分けてListを表示する - Swift・iOSの続きです。今回はListからNavigationLinkを使って画面遷移する…

【SwiftUI】セクションごとに分けてListを表示する

はじめに 開発環境 サンプルイメージ 実装 おわりに 参考 はじめに 【SwiftUI】Listを表示する - Swift・iOSの続きです。今回はListをセクションごとに分けて表示する実装を試したので記事に残します。 開発環境 macOS Big Sur 11.2.3 Xcode 12.4 Swift 5.3.…

【SwiftUI】Appのプロトコルに準拠した構造体で"environmentObject(_:)"を適用する

はじめに 開発環境 本題 おわりに 参考 はじめに プロジェクト作成時にLife CycleをSwiftUI Appにすると生成される、「Appのプロトコルに準拠した構造体」で"environmentObject(_:)"を適用する方法のメモ。 開発環境 macOS Big Sur 11.2.3 Xcode 12.4 Swift …

【SwiftUI】SFSafariViewControllerを使えるようにする

はじめに 開発環境 実装 使用例 おわりに 参考 はじめに UIViewControllerRepresentableを使って、SFSafariViewControllerをSwiftUIで使用できるようにしてみました。 ※WKWebViewをSwiftUIで使いたい場合は以下記事を参考にしてみてください。 【SwiftUI】WK…

【SwiftUI】モーダルビューを全画面表示にする

はじめに 開発環境 本題 通常のモーダルビューとの実装の違い 全体のコード おわりに 参考 はじめに モーダルビューを全画面表示する実装についてメモ。 開発環境 macOS Big Sur 11.2.3 Xcode 12.4 Swift 5.3.2 本題 通常のモーダルビューとの実装の違い 【S…

【SwiftUI】アラートを表示する

はじめに 開発環境 手順 全体のコード おわりに 参考 はじめに アラートを表示する手順をまとめました。 開発環境 macOS Catalina 10.15.7 Xcode 12.2 Swift 5.3.1 手順 ContentView.swiftを開いて、Textを削除。 ContentView.swift 画面右上の"+"を選択。 "…

【SwiftUI】モーダルビューを実装する

はじめに 開発環境 本題 手順 モーダルビューを実装するファイルを追加 モーダルビューを呼び出す モーダルビューに閉じるボタンを追加 全体のコード おわりに 参考 はじめに モーダルビューを実装する手順をまとめました。 開発環境 macOS Catalina 10.15.7…

【SwiftUI】TextFieldを実装する

はじめに 開発環境 本題 手順 全体のコード おわりに 参考 はじめに TextFieldを実装する手順をまとめました。 開発環境 macOS Catalina 10.15.7 Xcode 12.2 Swift 5.3.1 本題 手順 ContentView.swiftを開いて、Textを削除。 ContentView.swift 画面右上の"+…

【SwiftUI】TabViewのタブ選択時の処理を実装する

はじめに 開発環境 本題 おわりに 参考 はじめに TabViewのそれぞれのタブを選択した時の処理を実装する方法について記載します。 開発環境 macOS Catalina 10.15.7 Xcode 12.2 Swift 5.3.1 本題 onChange(of:perform:)を使うことで、各タブを選択した時の処…

【SwiftUI】プッシュ通知を選択した時に特定の画面に遷移する

はじめに 開発環境 本題 動作イメージ 全体の実装 AppDelegate.swift SceneDelegate.swift RootView.swift RootViewModel.swift HomeView.swift PushDetailView.swift PushDetailViewModel.swift WebView.swift 補足 おわりに 参考 はじめに Firebase Cloud …

【SwiftUI】Firebase Cloud Messagingで受信したプッシュ通知の内容をSwiftUIのViewで利用する

はじめに 開発環境 本題 おわりに 参考 はじめに Firebase Cloud Messagingで受信したプッシュ通知の内容をSwiftUIのViewで利用する実装について記事に残します。 ※Firebase Cloud Messagingの導入に関しては、以下の記事に記載しています。 【Firebase Clou…