Swift・iOS

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

Swift

【Firebase Cloud Messaging】導入の手順

はじめに 開発環境 手順 設定 Identifierを追加 Apple Push Notification Authentication Keyの取得 Capabilityを追加 Firebaseプロジェクトを追加 FirebaseにiOSアプリを追加する Firebaseの構成ファイルをプロジェクトに追加 Firebase SDKをプロジェクトに…

【SwiftUI】NavigationLinkで遷移した画面の上部に謎の余白が発生する原因

はじめに 開発環境 本題 謎の余白問題 問題発生時のコード 原因 解決方法 おわりに 参考 はじめに 「原因がただの凡ミス」系の記事です笑 同様の現象で悩む方はいないかと思いますが、私はすぐに原因に気付けず時間を失ったので一応記事に残しておきます・・…

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

はじめに 開発環境 実装部分 おわりに 参考 はじめに UIViewRepresentableによって、SwiftUIのアプリでもWKWebViewを使えるようにしてみました。 ※2021/03/23 追記 SFSafariViewControllerをSwiftUIで使用する方法について、以下記事にしました。 【SwiftUI…

【SwiftUI】"No exact matches in call to initializer"の原因

はじめに 開発環境 本題 エラー発生時の実装内容 エラー内容に関して 原因 おわりに はじめに 最近SwiftUIに触る機会があるのですが、【SwiftUI】Listを表示する - Swift・iOSの内容を実践している時にケアレスミスで表題のエラーが発生しました。原因につい…

【SwiftUI】ログイン画面の実装まとめ

はじめに 開発環境 実装イメージ 実装 おわりに 参考 // はじめに これまで以下3つのログイン機能の実装をしてきました。今回は、それぞれの記事の内容を全て反映した全体のコードを記載します。 ・【SwiftUI】IDとパスワードでログインする画面を実装する -…

【SwiftUI】Sign In with Appleの実装

はじめに 開発環境 実装 設定手順 コード メールアドレスとフルネームの取得条件である「初回」の定義 おわりに 参考 はじめに 【SwiftUI】LINEログインの実装 - Swift・iOSの続きです。今回はSign in with Appleを実装していきます。 ※ログイン機能について…

【SwiftUI】LINEログインの実装

はじめに 開発環境 実装 設定手順 コード おわりに 参考 はじめに 【SwiftUI】IDとパスワードでログインする画面を実装する - Swift・iOSの続きです。今回はLINEログインを実装していきます。 ※ログイン機能については以下の記事でも取り上げています。 ・【…

【SwiftUI】IDとパスワードでログインする画面を実装する

はじめに 開発環境 実装 実装方針 コード おわりに 参考 はじめに IDとパスワードでログインする画面をSwiftUIで実装してみました。 ※ログイン機能については以下の記事でも取り上げています。 ・【SwiftUI】LINEログインの実装 - Swift・iOS ・【SwiftUI】S…

【SwiftUI】Listを表示する

はじめに 開発環境 手順 リストを表示 リストにタイトルを追加 セルに複数の内容を表示する おわりに 参考 はじめに UITableViewのUIを、SwiftUIではListで実装します。今回はListを表示する方法について記載します。 開発環境 ・macOS Catalina 10.15.7 ・X…

【SwiftUI】タブ(TabView)を追加する詳細な手順

はじめに 開発環境 手順 プロジェクトを作成 TabViewを追加 タブのアイコンとタイトルを変更する 全体のコード おわりに 参考 はじめに UIKitではUITabBarでタブを表示していましたが、SwiftUIではTabViewを使います。私はSwiftUIを触る頻度がそこまで高くな…

【SwiftUI】Property Wrappers ( @State @Binding @ObservedObject @EnvironmentObject @StateObject ) の使いどころを理解する

はじめに サンプルに関して 開発環境 実装パターン1:@Stateのみを使う場合 実装パターン2:@Stateと@Bindingを使う場合 実装パターン3:@ObservedObjectを使う場合 実装パターン4:@EnvironmentObjectを使う場合 実装パターン5:@StateObjectを使う場合 おわり…

【SwiftUI】@Bindingの使い方

■Bindingとは "A property wrapper type that can read and write a value owned by a source of truth." ※引用:Apple Developer Documentation 「信頼できる情報源が所有する値の読み取りと書き込みが可能なプロパティラッパータイプ」です。 ・・・? ■サ…

【SwiftUI】@Stateはどのような時に使うのか説明してみた

■@Stateとは "A property wrapper type that can read and write a value managed by SwiftUI." ※引用:Apple Developer Documentation 「SwiftUIによって管理される値を読み書きできるプロパティラッパータイプ」とのことです。 正直、上記ページを読んでも…

【Swift】SwiftLintをCocoaPodsを使って導入する

■開発環境 ・Xcode 11.5 ・Swift 5.2.4 ・SwiftLint 0.40.3 ■手順 1.SwiftLintをインストール pod 'SwiftLint' 2.Run Scriptに以下を追加 追加後ビルドすると、Xcodeにルールに反した実装箇所に警告やエラーが表示されます。 if which "${PODS_ROOT}/SwiftLi…

【Swift】ページネーションを実装する(UICollectionView/API)

【Swift】UICollectionView/APIから画像URLを取得して画像を表示(https://www.hfoasi8fje3.work/entry/2019/08/22/224038)でAPIから画像取得後UICollectionViewに表示する実装についてまとめました。 今回は上記記事の続きとして、ページネーションを実装…

【Swift】UICollectionView/APIから画像URLを取得して画像を表示

APIから画像URLを取得して画像をダウンロードし、UICollectionViewに表示するサンプルを実装してみました。 ※APIはPixabay APIを使用しています。 https://pixabay.com/ja/ ※2019/11 追記 以下記事でページネーションを実装しました。 www.hfoasi8fje3.work …

【Swift】横スクロールするページをStoryboardで実装する

コードで実装する横スクロールについては、以前に下記記事で取り上げました。 今回はStoryboardで横スクロールを実装する方法について教えていただいたので、備忘も兼ねて記事に残します。 ・【Swift】横スクロールするページを実装する(UIScrollView/UIPage…

【Swift】APIからGETでデータを取得/CodableでJSONをデコード

過去に以下の記事で、AlamofireとSwiftyJSONを使った例、SwiftyJSONを使わずにCodableでパースする例を扱いましたが、今回はAlamofireとSwiftyJSON使わない例となります。 https://www.hfoasi8fje3.work/entry/2018/06/03/201000 https://www.hfoasi8fje3.wo…

【Swift】URLSessionでメモリが解放されない原因と対処法

■開発環境 ・Xcode 10.2.1 ・Swift 5.0.1 ■現象 タブAに以下のようにURLSessionを使って画像URLをUIButtonに表示する処理を書いたのですが、その後「タブBを選択」→「タブAを選択して再度画像を表示」を繰り返すと、メモリが微増していくではありませんか・…

【Swift】UICollectionView/xibファイルでカスタムセルを作成

以前、UICollectionViewをコードのみで実装する方法を以下の記事で取り上げました。 https://www.hfoasi8fje3.work/entry/2019/02/14/000000 今回は、上記の記事の実装をもとに、カスタムセルをxibで作成し適用する方法を試してみます。 ■開発環境 ・Xcode 1…

【Swift】UIImageView/どの画面サイズでも画像の縦横比を保ったまま全領域を表示させたい(バナー画像のレイアウト)

「どの画面サイズでもバナー画像が切れることなく、縦横比も保ったままレイアウトする方法ってどうすれば良いんだっけ?」とレイアウトわかってない感満載な現象が起こったので、記事に残しておきます。 ■開発環境 ・Xcode 10.2 ・Swift 5.0 ■やりたいこと …

【Swift】NukeでURLの画像を表示/キャッシュ

■開発環境 ・Xcode 10.2 ・Swift 5.0 ・Nuke 7.5.1 ■手順 1.Nukeをインストール pod 'Nuke' 2.StoryboardでUIImageViewを配置 3.StoryboardのImageViewをViewControllerに関連づける 4.ViewControllerに以下実装 https://www.hfoasi8fje3.work/entry/2019/03…

【Swift】KingfisherでURLの画像を表示/キャッシュ

■開発環境 ・Xcode 10.2 ・Swift 5.0 ・Kingfisher 4.10.1 ■手順 1.Kingfisherをインストール pod 'Kingfisher' 2.StoryboardでUIImageViewを配置 3.StoryboardのImageViewをViewControllerに関連づける 4.ViewControllerに以下実装 https://www.hfoasi8fje3…

【Swift】URLSessionを使ってURLの画像を取得/キャッシュ

【Swift】UIImageViewにURLの画像を表示する(2) - Swift・iOSの続きです。今回は画像の取得に加えてキャッシュに関する機能を実装してみます。 ■開発環境 ・Xcode 10.1 ・Swift 4.2.1 ■手順 1.StoryboardでUIImageViewを配置 2.StoryboardのImageViewをViewC…

【Swift】Ambiguous reference to member 'dataTask(with:completionHandler:)'の解決方法

【Swift】UIImageViewにURLの画像を表示する(2) - Swift・iOSの実装時に出たエラーとその解決方法についてメモ。ただのケアレスミスなのですが、一応記録に残します。 ■開発環境 ・Xcode 10.1 ・Swift 4.2.1 ■エラーが出た時のコード このコード一目見て普通…

【Swift】UIImageViewにURLの画像を表示する(2)

【Swift】UIImageViewにURLの画像を表示する(1) - Swift・iOSの続きです。今回はURLSessionを使ってUIImageViewにURLの画像を表示してみます。 ■開発環境 ・Xcode 10.1 ・Swift 4.2.1 ■手順 1.StoryboardでUIImageViewを配置 2.StoryboardのImageViewをViewC…

【Swift】UIImageViewにURLの画像を表示する(1)

■開発環境 ・Xcode 10.1 ・Swift 4.2.1 ■手順 1.StoryboardでUIImageViewを配置 2.StoryboardのImageViewをViewControllerに関連づける&ViewControllerに以下実装 ・ViewController.swift import UIKit class ViewController: UIViewController { @IBOutlet …

【Swift】Initialization Closureを使ってリファクタリング

【Swift】Initialization ClosureでviewDidLoadの肥大化を防ぐ - Qiitaを参考にさせていただき、過去の記事で使ったサンプルコードをリファクタリングしてみました。 ※サンプルコードは【Swift】Swift4でHMSegmentedControlを試す - Swift・iOSを使っていま…

【Swift】円グラフを描画する(Charts)

■開発環境 ・Xcode 10.1 ・Swift 4.2.1 ■サンプルのイメージ ■手順 1.Chartsをインストール pod 'Charts' 2.StoryboardでViewを配置し、Custom Classに「PieChartView」を指定 3.StoryboardのPieChartViewをViewControllerに関連づける&以下実装 ・ViewContr…

【Swift】アニメーション系のライブラリSpringを試す

■開発環境 ・Xcode 10.1 ・Swift 4.2.1 ■サンプルのイメージ ■手順 1.Springをインストール pod 'Spring', :git => 'https://github.com/MengTo/Spring.git' 2.StoryboardでUIImageViewを配置し、Custom ClassのClassをSpringImageView、ModuleをSpringに設…