くま's Tech系Blog

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

Swift

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の循環参照を防ぐとの記載がありました。 これを見て??って思いよくわからなかったので、…

値型(struct)と参照型(class)について

今回はタイトルにもある通り、値型と参照型について説明していきます。 プログラミングの基礎的な概念だと思うので、理解しといて損はありません。 今回はSwiftで説明していきたいと思います。 値型 まずは値型について説明します。 値型は変数の中に実際の…

SwiftUIでjsonデータを取り扱ってみる

今回はjsonデータを使って画面表示を行ってみたいと思います APIを使って戻り値のjsonデータをパースして値を取得するというのはモバイル開発では必ずと言っていいほどやる処理だと思うので、学んでいきます!! jsonデータの準備 今回は実際にAPIを使ってで…

SwiftUIを触ってみる

今回は前から気になっていたSwiftUIを触ってみようと思います 今回の記事は、SwiftUIのチュートリアルをベースにしています プロジェクト作成 まずはプロジェクトを作ってみましょう! プロジェクトを新規で作成する際にSingle View App を選択します Nextを…

iOSのQRコード読み取りについて

今回はiOSでQRコードを読み取る処理について書こうかと思います 使用バージョンは以下の通りです Swift 5.0 カメラ起動 QRコードを読み取る処理で最初にやることと言えば、カメラ起動です まずは、カメラ起動の流れを見ていきましょう カメラに起動にはAVFou…