iOSエンジニアのつぶやき

毎朝8:30に iOS 関連の技術について1つぶやいています。まれに釣りについてつぶやく可能性があります。

2021-01-01から1ヶ月間の記事一覧

【Swift】UIRefreshControl をコードからリフレッシュさせる

本日は UITableView や UICollectionView に追加した UIRefreshControl をコードからリフレッシュさせる方法を紹介したいと思います 結論 基本的には UIRefreshControl の beginRefreshing() を呼び出すことで、リフレッシュの UI は表示されているのですが…

【Android】Cannot inline bytecode built with JVM target 1.8 into bytecode that is being built with JVM target 1.6. 対処法

Text の変更を取得しようと下記のよう、Listener を追加すると謎のエラーが発生しました。 binding.accountNameInputTextField.addTextChangedListener { println(it.toString()) } // Cannot inline bytecode built with JVM target 1.8 into bytecode that…

【Kotlin】Koin で DI してみた

絶賛個人開発中のアプリで Clean Architecture を採用していて、DI(Dependency Injection) Framework の Koin を使う機会があったので、その使用方法をメモ程度に残しておきたいと思います‍♂️ github.com それではやっていく まずは、App レベルの build.gra…

【Android】View の Background をアニメーションさせる

本日はタイトルの通り、Android で View の background リソースをアニメーションさせながら変更する方法を紹介したいと思います‍ それではやっていく まずは、アニメーションの初期状態の drawable とアニメーション後の drawable をそれぞれ定義しておきま…

【Android】カスタムビューのカスタム属性を設定する

今回は、以前の「カスタムビューの作成」に引き続き、カスタムビューでカスタム属性を追加・適用する方法をメモ程度に残しておきます‍♀️ それではやっていく まずは、カスタム属性を定義するための xml を res/values 配下に attrs_account_type_select.xml …

【Android】Kotlin + XML で View のコンポーネント作成

本日はタイトルの通り、Kotlin + XML で View のコンポーネントを作成する方法を紹介したいと思います。iOS だと Swift + xib で作るカスタムビューみたいな感じのやつです‍♀️ それではやっていく まずは、view_account_type_select という名前でレイアウト…

【Swift】TextView のカーソル位置を取得する

今回は、タイトルの通り TextView から Cursor 位置 (Frame) を取得する方法を紹介していきたいと思います‍♀️ 結論 結論下記のように Cursor の Frame を取得することができます。UITextInput のインスタンスプロパティ selectedTextRange でテキスト内で選…

【Xcode12】Double-quoted include “pb.h” in framework header, expected angle-bracketed instead の対処法

久しぶりに Cocoa Pods で、インストールしているライブラリを更新し Xcode12.0.1 でビルドしたところ下記のような見慣れないエラーに遭遇しました。 Double-quoted include “pb.h” in framework header, expected angle-bracketed instead 色々ググって見る…

【Android】ButtonのStateに応じてBackgroundを変更する

本日は Android の Button で State に応じて BackgroundColor を変更する方法を紹介していきたいと思います。 それではやっていく まずは、state によって切り替わる Color を xml として定義します。今回は state_background.xml という名前でファイルを作…

【Kotlin】Kotlin でアンラップ

Kotlin でのアンラップの仕方をメモしておきます。 結論 こんな感じで、Swiftの if let っぽくアンラップできる。 var name: String? = "" name?.let { println(it) } また、null合体演算子と組み合わせることで、デフォルト値と合わせてシンプルに値を取り…

【Kotlin】Fragment のイベントを Activity で受け取る

本日も初歩的な内容ですが、Fragment のイベントを Activity で受け取る実装を行ったので、その方法をメモ程度に残しておきます‍♂️ それではやっていく Fragment 側の実装は下記のようになります。重要な部分は OnboardSignUpTermsOfServiceListener に関す…

【Swift】Algolia からデータを取得する

みなさんこんにちは。最近個人アプリ開発に熱中しすぎるあまりネタが切れている Yamato です‍♀️ というわけで、本日はタイトルの通り Algolia からデータを取得する方法を紹介したいと思います。 結論 というわけで、下記がデータを取得するサンプルになりま…

【Firestore】Swift で該当する月のデータを取得する

今回は、Firestore に保存されているデータで、該当する月のデータのみを取得してくる方法のサンプルを紹介していきたいと思います。 結論 サンプル実装は、Ballcap という Firestore のラッパーライブラリを使っていますが、基本的にやることは同じで isGre…

【Firestore】複合インデックスを作ってみる

みなさん、Firestore は使っていますか?僕は、個人で開発中のアプリでがっつり利用させてもらっている(Firebase信者)ので日々 Firestore と格闘しています 今回はそんな Firestore で複合インデックスを作成する機会があったのでメモしておきます。 複合イ…

【Swift】現在から〇〇時間後のDateを取得する

本日も初学者向けの内容で、現在から〇〇時間後や〇〇日前の Date を取得する方法を紹介したいと思います。 結論 下記のように Calendar のインスタンスメソッド date(byAdding:to:options:) で DateComponents に .hour を、value に 1 を追加することで 1…

【Swift】MapView で Map を表示するだけの記事

本日もタイトルの通り短い内容になりますが、初学者向けに Swift の MapView で Map を表示する方法を紹介したいと思います‍♂️ それではやっていく 今回は下記のように、特定の地点で固定表示できるようにするサンプルを実装してみます。 MKMapView の実装は…

【Swift】Navigation に複数のアイテムを設置

本日も短い内容ですが、初学者向けに NavigationBar に複数のアイテムを設置する方法を紹介したいと思います。iOS標準のカレンダーなんかはアイテムが二つ設置されていますよね 結論 UIViewController のプロパティを navigationItem の navigationItem.righ…

【Android】Material Components の TextField でカーソルの色を変えるには

おはようございます。本日も Android Material Components 周りで調べたことをメモがわりに書いておきます‍♂️ 結論 Material Components の TextField の cursor color は、どうやら設定されている Theme の primary になるそうです。 github.com 今回僕は該…

【Swift】Date型で同じ年、月、週かどうかを取得できるようにする

今回はタイトルの通り Swift の Date 型で、2つの Date が同じ年、月、週かどうかを取得する方法を紹介したいと思います‍♂️ 方法 とりあえずコードは下記のようになります。今回は Date の Extension として定義しています。 extension Date { func isEqual(…

【Android】Material Button で設定した app:cornerRadius で反映されない

下記を参考に MaterialComponents の Button で、角丸のボタンを作成しようとすると app:cornerRadius で指定した値が反映されず、角丸にならないという問題が発生していました。 stackoverflow.com 解決法 どうやら MaterialComponents を使用するには、親…

【Swift】YPImagePicker を使ってみた

iOS で Photo と Video のいい感じのピッカーライブラリを探していたところ、YPImagePicker というものを見つけたので使い方を紹介したいと思います‍♂️ github.com 使ってみる 今回は1~3枚の間で複数選択を有効にして、全て正方形の画像として取得できるよう…

【iOS】Fastlane で iOS の Build Number をインクリメント

今日はタイトルの通り Fastlane で、Xcode プロジェクトの build number をインクリメントする方法を紹介したいと思います。 それではやっていきましょ 結論 まずは、build number をインクリメントするためのレーンを Fastfile に追記します。ensure_git_st…

【Android】dpってなんぞや

今回は Android アプリ開発において、なんとなくなぁなぁにしていた dp の理解を深めていきたいと思います✍️ そもそもなんで px 単位じゃない? iOS アプリ開発においてもこれは言えることですが、基本的にモバイルアプリの開発はマルチデバイスでのレイアウ…

【Android】Color ResourceでAlphaを追加する

Android の colors.xml に追加する Color にAlpha を追加する方法が分からなかったので、メモ程度に残しておきます 方法 RGB 同様に16進数で、アルファ値を指定することで追加することができます。今回の場合は、(# を除いた)先頭2文字がアルファ値を示して…

【Android】Installation error: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED 対処法

絶賛開発中のアプリで、API 19 のエミュレータでテストをしようと、実行すると下記のようなエラーが発生しました。 Installation error: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED ちょっと初見のエラーだったので、ググってみると何やら怪しい回答が、、 st…

【Swift】Realmでテストを行う

今日は、Swift ので単体テストを行う際に Realm のデータベースを入れ替えてテストする方法を紹介したいと思います それではやっていく まずは、テストのデータを格納するための .realm ファイルを作成し保存します。また、簡単なテストデータ作るときは Rea…

【Android】特定のActivityでStatus Barのテキストカラーを変更する

機能に引き続き今日も Android 関連の小ネタです‍♀️ 方法 Activity に仕様している style に android:windowLightStatusBar 属性を追加し、true にすることで Status bar に配置してあるアイテムの色を Gray にすることができます。逆に Status Bar のカラー…

【Android】特定のActivityのAction Barを消す方法

今日はタイトルの通り、Android で特定の Activity の Action Bar を消す方法を紹介します。 方法 やり方は簡単で、アプリの AndroidManifest に記述している Activity の設定で、android:theme に NoActionBar を追加します。下記が MainActivity で NoActi…

【Swift】iPad で UIActivityViewController の表示に気を付ける

iPhone で UIAlertController を表示させたことがある方なら馴染みがあると思いますが、UIAlertController や UIActivityViewController は iPad でそのまま表示処理を書いてしまうとランタイムエラーでクラッシュしてしまいます。 筆者も UIActivityViewCon…

【Android】android.content.ActivityNotFoundException の対処法

MainActivity から異なるパッケージにある OnboardActivity に Intent を使用して画面遷移しようとしたところ下記のような Error に遭遇していました E/AndroidRuntime: FATAL EXCEPTION: main Process: YamatoOtaka.Fidee.debug, PID: 30741 java.lang.Run…