iOS
久しぶりに通知の許可周りの実装をしたので、今回は初学者向けに通知の許可設定の実装方法を紹介していきたいと思います♀️ ユーザがアプリの許可をしているかどうか UNUserNotificationCenter.current().getNotificationSettings { settings in switch sett…
さっそくですがみなさん、下記のコードの出力はどうなると思いますか? let textField = UITextField() textField.text = nil print(textField.text) 結果は Optional("") になります。何故 nil にならないのか不思議ですよね 理由としては、Objective-C で…
時々使う UIViewController のプロパティ presentingViewController と presentedViewController において、どっちがどの ViewController を指しているのか分からなくなってしまうことがあるのでメモしておきます 結論 それぞれの対応関係は下記のようになり…
本日は UITableView や UICollectionView に追加した UIRefreshControl をコードからリフレッシュさせる方法を紹介したいと思います 結論 基本的には UIRefreshControl の beginRefreshing() を呼び出すことで、リフレッシュの UI は表示されているのですが…
今回は、タイトルの通り TextView から Cursor 位置 (Frame) を取得する方法を紹介していきたいと思います♀️ 結論 結論下記のように Cursor の Frame を取得することができます。UITextInput のインスタンスプロパティ selectedTextRange でテキスト内で選…
本日も初学者向けの内容で、現在から〇〇時間後や〇〇日前の Date を取得する方法を紹介したいと思います。 結論 下記のように Calendar のインスタンスメソッド date(byAdding:to:options:) で DateComponents に .hour を、value に 1 を追加することで 1…
本日もタイトルの通り短い内容になりますが、初学者向けに Swift の MapView で Map を表示する方法を紹介したいと思います♂️ それではやっていく 今回は下記のように、特定の地点で固定表示できるようにするサンプルを実装してみます。 MKMapView の実装は…
本日も短い内容ですが、初学者向けに NavigationBar に複数のアイテムを設置する方法を紹介したいと思います。iOS標準のカレンダーなんかはアイテムが二つ設置されていますよね 結論 UIViewController のプロパティを navigationItem の navigationItem.righ…
今回はタイトルの通り Swift の Date 型で、2つの Date が同じ年、月、週かどうかを取得する方法を紹介したいと思います♂️ 方法 とりあえずコードは下記のようになります。今回は Date の Extension として定義しています。 extension Date { func isEqual(…
iOS で Photo と Video のいい感じのピッカーライブラリを探していたところ、YPImagePicker というものを見つけたので使い方を紹介したいと思います♂️ github.com 使ってみる 今回は1~3枚の間で複数選択を有効にして、全て正方形の画像として取得できるよう…
今日はタイトルの通り Fastlane で、Xcode プロジェクトの build number をインクリメントする方法を紹介したいと思います。 それではやっていきましょ 結論 まずは、build number をインクリメントするためのレーンを Fastfile に追記します。ensure_git_st…
iPhone で UIAlertController を表示させたことがある方なら馴染みがあると思いますが、UIAlertController や UIActivityViewController は iPad でそのまま表示処理を書いてしまうとランタイムエラーでクラッシュしてしまいます。 筆者も UIActivityViewCon…
個人で開発中のアプリで、バージョンに応じて強制アップデートをかける際に、現在のバージョンと必須バージョンの比較をすることがあったのでその方法をメモしておきます✍️ 結論 必須のバージョン(requiredVersion)と現在のバージョン(currentVersion)を比較…
今日は、Swift や Objective-C で画像をトリミングする際に非常に有名なライブラリ、CropViewController を使ってみたいと思います github.com Swift 標準の UIImagePickerController クラスでもallowsEditing を true にすることで、画像選択後にトリミング…
今日はタイトルの通り、Swift でローカルプッシュを送信する方法を紹介したいと思います♀️ ちなみに、実装は Swift5.3 で動作確認は iOS14.1 で行っておりやす。 それではやっていく まずは、通知を送信できるようにするためにユーザに許可してもらう必要が…
今回は、Fastlane でアプリの Version や Build Number を取得したい時の Tips を紹介します Version の取得 PlistBuddy を使用することで、Info.plist の値を操作しやすくすることができます。CFBundleShortVersionString はアプリのバージョンを指してい…
まえがき 本記事は、iOS Advent Calendar 2020 の16日目の記事です♀️ 詳細は Qiita の方で書いたので、よければそちらをご覧ください 年表 下記をご参照ください♂️ qiita.com あとがき 振り返って見るとAppleの技術進歩のスピードが恐ろしく早くて驚愕しま…
今日はタイトルの通り、Firebase Storage で JPEG ファイルを Swift でアップロードする方法を紹介したいと思います♀️ 使ったもの 今回の実装をする上で使用したものは下記になります。 Firebase/Storage 6.34.0 RxSwift 6.0.0-rc.1 Xcode12.0.1(Swift5.3) …
今回は RxSwift で Realm のデータ(Object) の更新を通知する方法を簡単に紹介します♀️ それではやっていく データの変更を通知するための Observable を返すメソッドは下記のようになります。Realm Object のインスタンスメソッド observe でデータの変更…
今回は初学者向けに、Swift で NavigationBar の戻るボタンをカスタマイズする際のベストプラクティスを紹介したいと思います ちなみに今回のゴールは下記のようになります。 before after コード まず前提として覚えておく必要があるのは、戻るボタンは Im…
みなさん、おはようございます。今年も Qiita Advent Calendar に申し込みましたが、ネタが無い Yamato です ということで、今回はタイトルの通り Firebase で Sign in with Apple を実装する手順を紹介していきたいと思います。 前提 iOS13 以上をアプリタ…
みなさん、最近 CollectionView は使っていますでしょうか?CollectionView っレイアウトの方法がいっぱいあってどれを使うべきか結構迷いますよね〜♀️ 今回はそんな CollectionView を使って、ページをめくるようにスクロールすることのできる UI を作って…
みなさん Swift で正規表現使ったことありますか?僕は、iOSアプリ開発はじめたての頃、よく分からずググりまくっていました 今回は、そんな少しとっつきづらい正規表現を改めてまとめることで、再理解しちゃおうぜ!という記事です 正規表現とは? 文字列の…
あるプロジェクトで、Xcode11.4.1 を使用していて iOS14.1 にバージョンアップした iPhone で実機インストールができないという問題が発生していました。 Failed to start remote service on device. Please check your connection to your device. 以前紹介…
今回は新しいデバイスの追加により、fastlane で管理している provisioning profile を更新する必要があったため、その作業メモを残しておきます 作業していくっ とりあえず、オプションの付与などを更新毎に設定するのは面倒なので、Fastfile に、Provisio…
今回は iOS14 での PhotoLibrary 周りの更新を簡単にまとめます。主なアップデートは Limited Photos Library と、Photos Library access level の二つです。 Limited Photos Library Limited Photos Library はその名の通り、アプリにアクセスを許可する写…
iOS アプリ開発をしていると、Xcode が対応していない iOS バージョンに端末の OS を上げてしまうことが多々あるかと思います。そんな時は、下記の手順で Xcode のサポートする iOS バージョンを追加します。 まずは、iOS のサポートファイルをまとめてくれ…
今回は、Firebase App Distribution を使った Staging アプリの配信で詰まっていた Error packaging up the application の対処法について簡単にまとめます。 起こっていたこと Staging アプリの Bundle ID の変更に伴い、証明書の発行や Firebase の設定な…
今回は、前回の Widget Configuration まとめ Part1 に続き、後半の内容をまとめていきたいと思います。 developer.apple.com 目次 Widget Configuration UI のタイトルや内容背景の色などをカスタマイズする方法について Widget System Intelligence につい…
今回は前回の iOS14 Widget の記事に続き、Widget Configuration に関して、下記の WWDC2020 セッションから得た知見をまとめていこうかと思います。また、1日で全ての内容をまとめる時間がなかったため、Part1・Part2 の二部構成でまとめていきたいと思いま…