くま's Tech系Blog

基本的には技術で学んだことを書き留めようと思います。雑談もやるかもね!

Swift

iOSのWebViewについて

今回はiOSでのWebViewについてまとめます AndroidのWebViewについては下記まとめていますので、気になる方はみてください!! kumaskun.hatenablog.com ※今回はUIkitです。SwiftUIはこの記事に追加するか、別で記事にします Webページを表示させる Webページ…

Google Mapを使ってみよう

今回はGoogle Mapをモバイル開発で使う流れをまとめようと思います。 AndroidとiOS両方説明しようと思います。 AndroidとiOSでできることにはほとんど差がないのでコードの書き方が少し違うだけだと思います。 iOSでGoogle Mapの対応を行う 最初にマップを表…

iOSのカメラについて

今回はiOSのカメラ機能についてまとめようと思います カメラ権限設定 最初にカメラと写真のライブラリーを使用するため、アクセスの許可をする必要があります。 プロジェクトのinfo.plistを開いて、アプリのアクセス許可を表示させるように設定を追加します …

RxSwiftのSubject・Relayについて

今回はRxSwift(RxCocoa)のSubject・Relayについてまとめようと思います Rxについては以前記事にしたので読んでみてください! kumaskun.hatenablog.com Subject まずはSubjectについてです Observableはイベントを検知するためのクラスですが、Subjectと後述…

Closuresのドキュメントを見る前に

Swiftのクロージャーについてですが、クロージャを細かく説明するわけではありません。 Swiftのクロージャーの公式ドキュメントを見ると単純に和訳するだけでは理解するのが難しい用語があります(個人的にかもしれませんが・・・) docs.swift.org 今回はドキ…

Swift API Design GuidelinesのConventionsについて

今回はAPIのデザインガイドラインのConventionsについてまとめようと思います 前回の命名についてのまとめは↓↓下記みてください!! kumaskun.hatenablog.com 英語も個人的にわかりにくく計算量など聞きなれない用語も出てきていたのでまとめます Convention…

Swift API Design Guidelinesの命名について

Swift API Design Guidelinesという実装でのコーディングルールをまとめた公式ドキュメントについてです コメントの書き方や命名などのコーディング規約のようなものです。今回は命名についてまとめようと思います 今回は自分の英語の勉強のアウトプットが主…

SwiftのDictionaryについて

今回はSwiftのDictionary型についてまとめようと思います Dictionaryとは? Dictionaryとはキーと値をセットにした配列のようなものです 例えば、Dictionaryでは、「名前 : “山田”」「年齢 :23」「性別 : “男”」のようにキーと値をセットで作成します。 この…

SwiftのGenericsについて

今回はジェネリクスについてまとめます ジェネリクス(Generics)は指定したタイプで柔軟に動作する再利用可能な関数や型を指定できる機能です ジェネリクスを使用するには、関数名のあとに<T>を指定します <T>は型引数(型パラメータ)と呼ばれるもので、この関数で</t></t>…

TableViewCellの再利用について

あるときこんなレビュー指摘がありました。 「CellのViewをhiddenにしているけど、ずっとhiddenになったままでいいの?再利用されるときに想定外の場合になる可能性があるよ」 最初、??と思ったのですが、そのときにTableViewCellは再利用されていることを…

Rx(Swift)とは?

今回はリアクティブプログラミングについてまとめようと思います RxSwiftをベースに説明しますが、概念の部分はAndroidや他のプログラミング言語でリアクティブプログラミングを行う場合でも共通すると思います Rxとは? Rx(Reactive X)とは、「オブザーバパ…

CompositionalLayoutsを使ってみる

今回はCompositionalLayoutsについてです CompositionalLayoutsはiOS13から登場したCollectionViewのレイアウト構築方法です これまではUICollectionViewFlowLayoutクラスを使用していましたが、次のような課題がありました Boilerplate code: ボイラープレ…

PencilKitを使ってみる

今回はPencilKitについてです PencilKitとはApple Pencilやユーザーの指からの入力を受け取り、iPadOS、iOS、macOSで表示する画像に変換するiOSアプリケーション用の描画できるSDKです PencilKitには、線を作成したり、消したり、選択したりするツールが付属…

frameとboundsの違いについて

今回はViewの配置やサイズ指定で使うframeとboundsについて違いを調べていこうと思います 違いを知らずに表示の不具合を起こす可能性があるので要注意です(まさに自分が体験しました...) frameについて 公式ドキュメントにあるように親Viewから見た相対的な…

Swiftのvar、letについての個人的疑問を解消する

今回はSwiftのvar、letについてです。 たまにvar、letを定義したときに思わぬワーニングが表示されることがあり、個人的に疑問に思う場面があったので疑問を解消する記事にしようと思います 基本的なvar、letの解説は割愛しますが、varは変数でletは定数です…

UIのインスタンス化について

Xcodeには、Interface Builderでコードを書かずにデザインを構築することが多いと思います Auto Layoutも比較的付けやすいので、使ったことがない人はいないくらい使われると思っています 今回は、Interface Builderとソースコードを紐付ける方法をまとめま…

Realmを使ってみよう(iOS編)

だいぶ久しぶりの更新になりました(なかなか忙しくて...) 今年初の更新がこのタイミングになってしまいましたが、これからは定期的に更新できればと思います 今回はRealmに関してまとめます。今回はiOS編です Realmとは? まずはRealmについて軽く説明しよう…

Callkitで着信画面を表示させる

今回はCallkitについてです Callkitは下記のようなiPhone標準の着信画面を表示させる機能です。画面がOFFの状態であれば、スライドして応答する画面が表示されます。また、着信履歴にもデータが残ります SkypeやLINEなどで電話をかけたときに、着信時に同じ…

UIViewのレイアウトライフサイクルについて

今回はUIViewの表示についてまとめようと思います。 AutoLayoutが効かない・Viewの表示位置がおかしい・表示されない・画面表示までが遅いことが実装している中で1度は経験はあると思います。 このような問題は、Viewの表示の流れを理解せずに開発しているこ…

Custom URL Schemeでアプリを起動する

今回はCustom URL Schemeでアプリを起動する方法を書いていきたいと思います。 iOSでは、 cm-app:// のような、アプリ固有のCustom URL Schemeを実装することで、 リンクをタップしてアプリを起動することができます。( ディープリンクとも言います) ディー…

iOSアプリでライセンス表示機能を作る

今回はライセンス機能についてです。 OSSのライブラリをiOSのアプリで利用している場合、使用したライブラリのライセンスをしかるべき場所に記載する必要があります。 ライブラリを追加する度にそれらを手動で更新すると手間になるので、それらをCocoaPodsの…

プッシュ通知の許可状況を確認する

今回は小ネタです プッシュ通知を許可しているかどうか知りたいときありませんか? そんなときに許可状況を確認するための実装です if UIApplication.shared.isRegisteredForRemoteNotifications { print("許可している") } else { print("許可していない") }…

プッシュ通知を処理する

今回はプッシュ通知についてです プッシュ通知はローカル通知とリモート通知がありますが、今回はリモート通知についてです 簡単にローカル通知とリモート通知の違いを説明すると、ローカル通知はアプリ単体でアプリがフォアグラウンド以外なら通知が表示さ…

UITabBarControllerについて

iOSの開発では必須といっていいくらいUITabBarControllerは使うと思います 今回はそんなUITabBarControllerについて記載しようと思います UITabBarControllerはstoryboardで作成する方法とコードで実装する方法があるので両方説明しようと思います。(個人的…

UITableViewでカスタマイズヘッダーを使う

しばらく更新していないうちに年を越してしまいました。。。。。 これからはなるべく更新していく予定です 今年初の記事はUITableViewでカスタマイズヘッダーを使う方法です UITableViewではstoryboardで作成することができるのですが、下記のようにヘッダー…

Optional型について

Swiftだけではないですが、SwiftにはOptional型という特徴的な型があります。 今回はそんなOptional型についてお話しできたらと思います! Optional型とは Optional型とは通常の値とは別にnullをとれる型です。 他の言語ではString型やInt型といった通常の型…

Comuputedプロパティについて

swiftは他の言語とは少し違い、基本的にはgetter/setterが必要ない言語です。 ただ、設定するときに値を加工したりする場合はComuputedプロパティというものがあります。(名前は最近知りました) 今回はそんなComuputedプロパティについて説明しようかと思い…

NavigationBarの下にオブジェクトが隠れるのを防ぐ

今回は小ネタです。 最近出くわしたNavigationBarの下にViewが隠れてしまうのを回避する方法です。 iPhone8では大丈夫だったのですが、iPhone Xsでは思いっきり隠れていました。 Viewの位置をソースコードで定義していたので、iPhone Xsのバージョンの位置を…

Xcodeでのオブジェクトの上下配置について

今回はStroyboardでオブジェクトを配置するときに少しつまずいた上下配置について説明しようと思います。 オブジェクトの配置 XcodeではStroyboardでオブジェクト(ここではViewやボタンなどのパーツのこと)を配置して画面を作ります。 ソースコードでUIを作…

クロージャーの[weak self]について

今回は、クロージャーの[weak self]について書いていこうと思います。 なぜこんな書き方をするのか調べてみると、クロージャーがselfを弱参照し、クロージャーとselfの循環参照を防ぐとの記載がありました。 これを見て??って思いよくわからなかったので、…