ttlog

日々の開発で得た知見の技術メモ。モバイルアプリネタが多いです。

iOS

iOS 端末のモデル識別子を取得する

開発中のアプリで端末の機種を判定したかったのですが、 UIDevice.current.model は iPhone や iPod touch としか返さないため、もう少し詳細な情報を取得する方法を調べました。 今回のコードにより iPhone12,3 等の形式の識別子を取得することが出来ます。…

設定アプリ(Settings Bundle)にUUIDを表示する方法

たまにですが、設定アプリに「ユーザーID」といった項目名でUUIDを表示しているアプリを見かけます。 開発中のアプリでも端末識別用のUUIDを設定アプリに表示する必要があったため方法を調べてみたのですが、 予め決まっている固定値を表示する方法がほとん…

TestFlightで「輸出コンプライアンスがありません」を表示されないようにする方法

TestFlightにアプリをアップロードした際に表示されるこの質問、fastlaneでアップロードする際にも表示され、自動でアプリが配信されなくなってしまうのですが、予めプロジェクト設定を追加しておくことで表示されないようにすることが可能です。 設定方法 I…

SwiftUIで共有メニューを表示する

アプリのコンテンツをメールやSNS等の外部サービスに渡す共有メニューをSwiftUIで表示する方法です。 共有メニュー表示用Viewの定義 UIKitではUIActivityViewControllerを使用して表示するこの共有メニューですが、現状SwiftUIで特に専用のViewがある訳では…

iOSアプリでSystem Imageを使用する(iOS13以降)

iOS13ではSystem ImageとしてSF Symbolsというものが追加され、UIKitのUIImageやSwiftUIのImageから使用出来るようになりました。 使用方法 それぞれ、以下のようにして名前を指定して表示します。 UIKit(UIImage) UIImage(systemName: "xxx") SwiftUI(Image…

UINavigationBarの透明化

まずは透明化/解除のExtensionを作成 public extension UINavigationBar { /// ナビゲーションバーを透明化する func enableTransparency() { setBackgroundImage(UIImage(), for: .default) shadowImage = UIImage() } /// ナビゲーションバーを透明化を解…

256bit乱数を生成する方法

256bitに限った話ではないのですが、大きめの乱数を生成する方法です。 乱数の生成は以下のように様々な方法がありますが、 RandomNumberGenerator arc4random() arc4random_uniform() rand() random() いずれにしても最大で64bitまでしか生成出来ないようで…

UITextViewのパディングを削除する

UITextViewにはデフォルトで若干のパディングが含まれています。このままだとレイアウトに支障をきたす場合もあるので、パディングを削除する方法を記載します。 コードで削除する 以下のようなUITextViewを定義したとして、 @IBOutlet weak var textView: U…

fastlaneでAdHoc配布用ipaの作成

環境 macOS: 10.14.2(Mojave) Xcode: 10.1(10B61) fastlane: 2.112.0 Ruby: 2.5.3 laneの定義 gymアクション(もしくはbuild_ios_appアクション)でビルドやパッケージングに関する処理が出来ます。lane名はここではadhocとします。 gym - fastlane docs また…

コマンドラインからのiOS Simulator画面のスクリーンショット/録画

simctlコマンドを使用します。 スクリーンショット $ xcrun simctl io booted screenshot xxx.png 画面の録画 $ xcrun simctl io booted recordVideo xxx.mov Ctrl+cで録画終了。 デバイスの指定 上記コマンド中のbootedの部分は起動中のデバイスを表す特殊…

Xcode10のちょっとした変更点: StoryboardからOutlet/Actionを作成する際のデフォルトConnection

Xcode10でStoryboard上のUIButtonからコード上にConnection(Outlet/Action)を作成する際、挿入位置によってデフォルトで選択済のConnectionが変わるようになっていました。(以前は"Outlet"固定だったかと思います) 具体的には、コードのViewControllerクラス…

iOS 文字列のサイズ取得方法

iOSにおける文字列のサイズ取得方法のメモです。 Viewの横幅と比較して、1行に何文字表示出来るか等の計算が出来たりします。 文字列のサイズ取得 NSStringクラスにサイズが取得出来るメソッドがあるので、こちらを使います。 size(withAttributes:) UIFont…

iOS 連絡先一覧の取得

Contacts Frameworkを使用し、標準の連絡先アプリに登録されている連絡先一覧を取得する方法についてまとめてみます。 Contacts Framework公式ページ サンプルコードは以下に置いています。 https://github.com/kurozu10344/ContactsSample 検証環境 iOS 11 …

PushでPop(風アニメーション)する

UINavigationControllerを使用したPush遷移の際のアニメーションをPop風(左から右へ)にする必要があったので、実現方法についてメモしておきます。 検証環境 Xcode9.2 iOS11 Simulator 大まかな流れ Animatorの作成(UIViewControllerAnimatedTransitioningプ…