Swift
本日はSwiftの小ネタです👷♀️ 結論 下記のようにして、単色のUIImageを取得することができます。UIGraphicsBeginImageContext()は、GraphicsContextを作成してスタックにプッシュします。次に、プッシュされたコンテキストをUIGraphicsGetCurrentContext()で…
本日は誰もが通るであろうUITableView/UICollectionViewの小ネタです♀️ 結論 UITableView/UICollectionViewのreloadData()のcompletionHandlerは公式でAPIが公開されていないので、UIView.animateを使うことでreloadData()の完了後に処理を書くことができま…
SwiftのコードベースでAutoLayoutを設定する時によくやるこれ。 view.translatesAutoresizingMaskIntoConstraints = false view.widthAnchor.constraint(equalToConstant: 18).isActive = true view.heightAnchor.constraint(equalToConstant: 18).isActive …
先日Zennを眺めていたら、面白そうな記事を見かけたので、備忘録的に残しておきます zenn.dev 結論 Swiftの配列で要素の重複を取り除く方法として、Setがありました。 Set(arrayLiteral: "a", "a", "b", "c") // ["b", "c", "a"] しかし、Setは基本的に配列…
結論 NSSelectorFromStringを使うことで、下記のように文字列からSelectorを生成することができるようですね let selector = NSSelectorFromString("delete:") ちなみに今回は、UICollectionViewのcollectionView(_:canPerformAction:forItemAt:withSender:)…
このViewのタップイベントをスルーして、背面にあるViewをタップできるようにしたいという場面は、たまに遭遇するかと思います。今回はそんな場面で使えるSwiftの小ネタについて書こうかと思います♀️ 結論 hitTest(_:with:)で受け取ったイベントが自分自身…
本日もSwiftの小ネタです♀️ 結論 SwiftのErrorプロトコルは、codeプロパティを持たないので、下記のようにNSErrorに変換することでcodeを取得するようにします。 extension Error { var code: Int { return (self as NSError).code } } てな感じで本日も以…
本日は初学者向けの内容で、UITableViewで空のCellを表示させないための簡易的な処理を紹介したいと思います♀️ よくあるこれです。 結論 tableFooterViewプロパティに空のUIView()をセットすれことで、空のCellが表示されないようになります。 tableView.ta…
本日はAlgoliaのインデックスを日付でソートする方法を簡単に紹介していきたいと思います👷♀️ それではやっていく インデックスをソートするにあたり、まず大前提として知っておくべきことが二点ほどあります。一つ目は、インデックス毎に一つのランキング式…
Capture Listとは? キャプチャリストは、よくClosure内で強参照によるインスタンスを保持を防ぐ下記のようなもので、Closure内で、ある値のキャプチャ方法を指定する役割があります。 let hoge = {[weak self] in self.hoge() } キャプチャ方法 キャプチャ…
最近ユーザにアプリのレビューリクエストを行う対応をしたので、備忘録として残しておきます✍️ ちなみにこれ。 結論 iOS10.3以降はこれでできる。ちなみにこのリクエストダイアログは一年で3回までしか表示できないらしいので注意が必要。 import StoreKit S…
結論 makeKeyAndVisible は、windowを key window として設定することで、同一レベル(もしくは同一レベル以下)の windowの最前面に表示するためのメソッドです。 ちなみにレベルには下記のようなものがあり、LevelはrawValueとしてCGFloat値を持ちます。 ext…
先日、下記の記事を見て 「optional プレフィックスってそうゆう役割だったのか!」ということを知ったので、メモしておきます✍️ qiita.com ということで、まずは Swift のドキュメントを見てみます。 You can define optional requirements for protocols. …
本日は秒速で終わるSwiftの小ネタです♀️ 結論 「5」を10桁で表示したい場合に、他の桁を「0」で埋めるサンプルが下記になります。 extension Int { func filled(digit: Int) -> String { return String(format: "%0\(digit)d", self) } } print(5.filled(di…
最近巷で聞く XCFramework がなんなのかをよく理解していなかったので、超簡単に概要を調べました✍️ XCFramework とは? Xcode11からバイナリフレークワークの配信のために新たにサポートされた方法で、下記のようにAppleプラットフォームの様々なターゲット…
「セキュアなデータをローカルに保存したい!」時によく使うiOSのキーチェーンについて、初学者向けに超ざっくりな概要を書きました。 キーチェーンとは? キーチェーンは機密性の高いユーザ情報などを iCloud 領域にセキュアに保存する仕組みのことです。ま…
今回はSwiftにあるassert 系メソッドのあれこれを調べていきたいと思います♀️ そもそもassertionとは? プログラムの実行時に満たされるべき条件をチェックして、条件を満たしていない場合はプログラムを停止したり、エラーを吐いたりする仕組みのことを言…
今回もSwift コンパイラ周りの小ネタです♀️ Compilation Mode とは? Compilation Mode は、プロジェクト内のファイルを全てコンパイルするか、変更されたファイルのみをコンパイルするかをコンパイラに指示します。 Xcode では、下記のように Build Settin…
今回はSwiftコンパイラのOptimization Level (最適化レベル)について調べる機会があったので、それらを簡単にまとめてみます 結論 結論、Swiftコンパイラには下記のような最適化レベルがあります。 Level 内容 -Onone 開発時のデフォルトレベルで、最小限の…
今回は Swift の UIView.animate で連続したアニメーションを実行する際のコールバック地獄を解消する方法を紹介したいと思います 結論 今回の悩みを解消できる素晴らしい記事があったので、車輪の再発明はしません✨ qiita.com Swift の Variadic Parameters…
本日は iOS のクリップボードにテキストを設定する方法をメモ程度に残しておこうかと思います 結論 とりあえずテキストを代入したい時はこんな感じで設定ができます。 UIPasteboard.general.string = "hoge" UIImage を設定したい場合はこんな感じ。 UIPaste…
今回は、iOSアプリでポップアップを表示する際に UIWindow を使ってグローバルに表示できるような実装を行ったので、そのメモを残しておきます♀️ やっていく とりあえず、ポップアップを表示するための Class は下記のようになります。AppDelegate なんかで…
本日は Swift の reduce() に関する小ネタです developer.apple.com 「配列の合計値を取得したい〜」って時、いつもこんな感じで reduce() を書いていました。 let list = [1, 2, 3, 4, 5] let sum = list.reduce(0, { $0 + $1 }) print(sum) // 15 実はこ…
本日はちょっと記事を書く時間が取れなかったので、初学者向けの内容で Swift のアクセスコントロールについて紹介します♂️ 一覧 結論 Swift には下記のようなアクセス修飾子があります。ちなみにアクセス修飾子を付けない場合はデフォルトで internal にな…
Google Map と Map それぞれの Custom URL Scheme を使って経路表示をする実装をしたのでメモ程度に残しておきたいと思います 結論 ということで、それぞれの経路表示を Alert として落とし込んだメソッドが下記になります。 執筆時点では、下記のような URL…
先日久しぶりに Zenn を眺めていたら、今まで使ったことのない便利な Array のメソッドの紹介記事を見つけたので、忘れないようにメモしておきます zenn.dev 例えば、配列の全ての要素がStringであるかどうかを調べる必要があった場合、今までは下記のように…
Local Notification を設定する際に、指定した日時でトリガーされるようにした時の UNCalendarNotificationTrigger の生成方法をメモしておきます 結論 結論としては下記のようになります。日時でトリガーする際に必要な UNCalendarNotificationTrigger は D…
今回は csv からデータを取得する方法をメモ程度に残しておきます。 それではやっていく 下記のような、お酒の情報が並んだ liquors.csv ファイルからデータを取得していきたいと思います。 ビール1缶,5,350 ビール1缶,5,500 チューハイ1缶,5,350 チューハイ…
今回は短い内容になりますが、SwinjectStoryboard と通常の Storyboard で UIViewController を生成する方法を紹介したいと思います♀️ SwinjectStoryboard については下記を参照してください。ちなみに現時点でリリースされている最新版のソースをビルドす…
今回は Swift の Date で、現在から特定の Date までがどの程度離れているかを示す Text の表示方法を簡単に紹介したいと思います 結論 今回は下記のように Date に Extension メソッドを追加し、1週間以上前の Date に関しては日付を取得できるようにしてみ…