2020-01-01から1年間の記事一覧
iOS13から使えるようになっていたカスタムフォントのAPIを試してみました。 この機能を使うと端末へのフォントインストールやフォントの確認ができます。 まずはフォント一覧の取得をしてみようと思います。 最初にテスト用のプロジェクトを作ります。 プロ…
画面サイズによって処理を変えたかったため、GeometryReaderというクラスを使って画面サイズを取得しました。 Viewのサイズは下の形で取得できます。 struct ContentView: View { var body: some View { GeometryReader { geometry in Text(String("\(geomet…
Xcode 12でビルドした時、下のようなエラーが出た時の対応です。 エラーはCocoaPodsで入れたRealmで発生していました。 building for iOS Simulator, but linking in object file built for iOS, for architecture arm64 結論としては、PodfileにEXCLUDED_AR…
下記事を参考にアプリ起動の高速化を試してみました。 iOSアプリの起動速度を2倍にするために、複数のDynamic FrameworkをStaticにして、ひとつのDynamic Frameworkを作る with Swift | by Muukii (Hiroshi Kimura) | Eureka Engineering | Medium まずはDyn…
gRPCを使ってgoのサーバーにSwiftでアクセスする処理を実装しました。 Swiftは5.2、Go言語はgo1.14.4、protobufは3.12.3を使っています。 gRPCとは gRPCとはGoogleが開発したRPCを実現するためのプロトコルのことです。 RPCはremote procedure callの略で、…
SwiftUIのGeometryReaderという構造体を使ってみました。 GeometryReaderとは自身の座標やサイズを子Viewに渡せる構造体です。 これを使う事で、動的に変化するViewなどが作りやすくなります。 今回は下URLを参考にさせて頂きました。 qiita.com 参照URLにも…
XcodeGenというxcodeprojファイルをyaml管理できるツールを試してみました。 これを使う事でxcodeprojファイルのコンフリクトを避ける事ができるようになります。 github.com インストール 今回はbrewを使ってインストールしました。 brew install xcodegen …
nmコマンドでUIWebViewを使っているか判別できるという事で検証してみました。 参考にしたのは下サイトです。 qiita.com まずは下記事を参考に自作のframeworkを作ります。 llcc.hatenablog.com 作成したframeworkに下のようなクラスを1つ追加します。 impor…
Xcodeで自動的に作られる[プロジェクト名].entitlementsについて調べてみました。 [プロジェクト名].entitlementsとは entitlementsとはプッシュ通知やApp Groupsなど、プロジェクトのCapabilityでの設定に関するファイルです。 Capabilityで通知の追加やApp…
Realm SwiftとSwiftUIを使ったテーブル実装を試してみました。 注) 2020/04/26時点でRealmはSwiftUIを公式サポートしていません。 対応状況は下Issueを参考にしてみて下さい。 github.com 表示 プロジェクトを作ったらCocoaPodsでRealmSwiftを追加します。 p…
アプリ開発で良く出てくる.frameworkという拡張子のライブラリを自作してみました。 frameworkを作成する Xcodeで新規プロジェクト作成時にFrameworkを選択します。 プロジェクトは下のようなファイル構成になっています。 Productsの中に入っているMyFramew…
Sequenceというプロトコルを試してみました。 Sequenceは配列に使われているプロトコルで、準拠することでforEachやmapなどのメソッドを使うことができます。 実装例は下の通りです。 deferを使ってreturnの後にcountを-1しています。 これで10から1までを順…
下のように文字を一定の長さで区切って配列にする方法を調べてみました。 "あいうえお" → ["あい", "うえ", "お"] 標準のメソッドは用意されてないようなので、下のように独自のメソッドを追加しました。 extension String { func split(length: Int) -> [St…
SwiftUIを使っていると出てくる\.記法について調べてみました。 この記法は以下のようにForEachなどで使われます。 struct ContentView: View { var body: some View { let models = [ MyStruct(id: 1, name: "name1"), MyStruct(id: 2, name: "name2"), ] r…
Swiftのassociatedtypeの仕様を再度勉強しました。 associatedtypeを使うと下のように独自の型(下の例だとMyType)を定義することができます。 protocol MyProtocol { associatedtype MyType } 定義した型は下のようにメソッドの引数や戻り値に使うことができ…
SwiftUIのVStackやHStackでは、下のようにTextを2行並べて書くだけでTextを縦並びにできます。 今回はこの仕組みについて調べてみました。 struct ContentView: View { var body: some View { VStack { Text("AAA") Text("BBB") } } } 上記のコードですが、…
SwiftUIだとローカル変数の定義でエラーになることが多いので整理してみました。 SwiftUIでのローカル変数定義方法 bodyの中の場合は下のようにreturnを付けることで定義できます。 struct ContentView: View { var body: some View { let a = 1 return Text…
SwiftUIのEnvironment / EnvironmentObjectという記法について調べてみました。 EnvironmentObjectとは EnvironmentObjectとはObservableObjectを外部から渡したりできるようになる記法です。 宣言は下のように行います。 struct ContentView: View { @Envir…
SwiftUIでViewを作る時、以下のようにsomeというキーワードが出てきます。 今回はこのキーワードについて調べてみました。 struct ContentView: View { var body: some View { Text("Hello, World!") } } 調査にあたって以下の記事を参考にさせて頂きました…
Today Extensionを使ったウィジェット作成を試してみました。 プロジェクトを作成したらメニューからTargetの作成を行います。 Today Extensionを選択します。 作成するとToday Extension関連ファイルが作られます。 Today Extensionを起動するとHello world…