しめ鯖日記

swift, iPhoneアプリ開発, ruby on rails等のTipsや入門記事書いてます

UITableViewCellのtextLabelがdeprecatedになってたので調べてみた

iPhoneアプリの実装をしていたらtextLabelとdetailTextLabelがdeprecatedになっていたので詳しく調べてみました。 textLabelとdetailTextLabelはUITableViewCellの左右のラベルにアクセスできるプロパティーです。 警告は下の通りです。 代わりにUIListConte…

Android用Realmの導入とbuild.gradleについてのメモ

今回はRealmの導入をしてみました。 それに合わせてbuild.gradleについて分からない所の簡単な調査も行いました。 インストール手順は公式サイトを参考にしました。 www.mongodb.com インストール まずは下のようにプロジェクトトップにあるbuild.gradleのpl…

Xcodeで単体テストとUIテストを試してみる

Xcode上でユニットテストとUIテストを作って動かしてみました。 ユニットテストは過去に下記事で試したんですが時間が経ったので再度試してみました。 llcc.hatenablog.com ユニットテストを動かす まずはプロジェクトを作成します。 作成時、Include Tests…

【Kotlin】ViewModelとLiveDataでUIの更新を楽にする

ViewModelとLiveDataを試してみました。 ViewModelとLiveDataは個別に使うこともできるのですが、セットで使われる事が多いようなので一緒に試してみました。 ViewModelを利用する まずはViewModelを使うためにモジュールのbuild.gradleに下の1行を追加しま…

Kotlinの委譲用のキーワードのbyを試してみる

Kotlinのbyというキーワードが分からなかったので調べてみました。 byを使ってみる byとは委譲に使うキーワードです。 実際に動かしながら委譲やbyについて見ていきます。 まずはInterfaceとInterfaceを適用したクラスを作成します。 interface TestInterfac…

Xcodeからxclocのエクスポートとインポートを試す

Xcodeからxclocのエクスポートとインポートを試してみました。 xclocとは翻訳ファイル(Localization.string)などを編集しやすい形にしたファイルです。 こちらのフォーマットはxliffを改善したもので、Xcode10から使えるようになりました。 国際化自体につい…

Swiftでの絵文字判定について調べる

Swiftで文字列の中の絵文字を判定できないかを調べてみました。 結論 下のようにisEmojiPresentation、isEmojiModifier、isEmojiModifierBaseを使う事で判定できるようです。 各メソッドの内容は下部の調査内容に記載しました。 let inputText = "Some strin…

AndroidのXMLのIDの+について調べる

Androidアプリ開発で出てくるIDの+の意味について調べてみました。 <EditText android:id="@+id/editText" /> 調べた所+を付けるのはIDを自動定義するためのようです。 +なしだと参照するだけなのですが、+ありだと新規定義&参照してくれます。 参考にしたのは下記事です。 android - @+id/とはなん</edittext>…

国際化対応メモ

アプリの国際化をしたのでその時の対応内容についてまとめました。 文字列の取得はR.swiftを利用する R.swiftとは画像の取得・Storyboardの取得などを文字列を使わずに行えるようになるライブラリです。 導入する事で下のようにStoryboardやUIImageを取得で…

iOS15のAppearanceについて整理する

iOS15でAppearanceの仕様が変わったので詳しく調べてみました。 Appearanceとは AppearanceとはUIKitの機能の一つで、デフォルトの色やフォントなどを設定できます。 例えばアプリ起動時に下の処理を入れるとナビゲーションバーが青色になります。 UINavigat…

【Kotlin】ContentProviderでGoogle Play services out of dateエラーが出たときの対処

ContentProviderでデータ取得しようとしたら下のようなエラーが出て失敗しました。 Google Play services out of date 調べたところGoogle Play Servicesのアップデートや不足しているSDKを入れる事で対処できるようです。 android studio: LogCatにWarning…

カレンダー形式のUIDatePickerの正しいサイズを計算する

UIDatePickerですがiOSから下のようなカレンダー形式が使えるようになりました。 コードは下のとおりです。 class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let datePicker = UIDatePicker() datePicker.pref…

Embedded binary is not signed with the same certificate as the parent appエラーの対処法

iOSアプリ開発で下のエラーが出たので対処しました。 エラーは実機検証のときのみ発生して、シミュレータでは発生しませんでした。 エラーを見た所アプリ本体とWidget Extensionの証明書が違うとの事です。 error: Embedded binary is not signed with the s…

MacBook Pro 2021でのビルド時間測定

MacBook Proを買い替えたのでXcodeでのビルド時間やAdobe Premiereなどでの動画書き出し時間を比較してみました。 新旧マシンのスペックは下の通りです。 ビルド時間を短くしたかったので、どちらもスペック高めのものを購入しました。 ■ 新MacBook Pro MacB…

UIDatePickerのdatePickerModeをcountDownTimerにした時の挙動確認

今回はUIDatePickerのdatePickerModeをcountDownTimerに変えた時の挙動を見てみました。 まずはdatePickerModeに何もセットしない場合の挙動を見ます。 プロジェクトをViewControllerを作って下のように変更します。 class ViewController: UIViewController…

Storyboard+UIScrollView+AutoLayoutでhas ambiguous scrollable contentエラーが出ないようにする

Storyboard上でUIScrollView+AutoLayoutを使うと下のようなエラーが出る事があります。 今回はその対処法を調べました。 Xcodeのバージョンは13です。 参考にしたのは下URLです。 qiita.com まずはプロジェクトを作ってMain.storyboardにUIScrollViewを配置…

Android StudioのCPU Profilerで重い箇所を特定する

下URLを参考にCPU Profilerを試してみました。 developer.android.com まずは新規プロジェクトを作成します。 Profiler画面は[View] > [Tool Windows] > [Profiler]と選択することで表示できます。 画面は最初は下のようになっています。 アプリを立ち上げる…

StoreKit2のサンプルコードを動かしてみる

今回は下URLからダウンロードできるStoreKit2のサンプルコードを動かしてみました。 developer.apple.com StoreKit2は旧来のStoreKitを改良したもので、シンプルなコードで購入処理が記述できるようになっています。 ただしiOS15限定以上なので利用する際は…

ShazamKitで音声認識を試してみる

下の記事を参考にShazamKitを動かしてみました。 ichi.pro ShazamKitは音楽認識ライブラリで、マイク経由で曲を渡すと曲名を出してくれたりします。 ShazamKitのiOS15から登場したライブラリで、SDKはAndroidでも使えるようです。 developer.apple.com 初期…

Docker+Railsでサーバー立ち上げメモ

Docker+Railsでサーバーを立ち上げた時のメモです。 元々Dockerを使わずに運営していたのですが、CentOS6がサポート切れになったことやbundle installでよく苦戦する事もあって環境を作り直す事にしました。 今回のOSはmacOSになります。 今回の構成ですがま…

PHPickerViewControllerで画像を取得する

PHPickerViewControllerというiOS14から登場したクラスで画像を取得してみました。 このクラスはUIImagePickerControllerと違って複数画像を選択することなども可能です。 まずは画面に画像選択用のボタンを設置します。 class ViewController: UIViewContro…

AndroidのEditTextやTextViewのフォントを明朝体にする

android:fontFamilyをserifにするだけです。

【Kotlin】Applicationを継承したクラスを試してみる

AndroidのApplicationクラスを使ってみました。 Applicationを継承したクラスは全Activityからアクセスできるクラスになります。 クラスは下のように定義します。 class MainApplication: Application() { } 下のようにAndroidManifest.xmlのapplicationタグ…

【Kotlin】NavControllerを試してみる

Empty Activityを選んでプロジェクト作成をします。 起動すると下のようにラベルだけの画面が表示されます。 次はナビゲーションを作成します。 まず新規作成でAndroid Resource Fileを選択します。 Resource TypeをNavigationにしてOKを押します。 my_navig…

SF Symbols + UIImageでアイコンを表示する

SF SymbolsというAppleの提供しているアイコンを使える機能を試してみました。 developer.apple.com SF Symbols + UIImageでアイコンを表示する 使い方は簡単で、下のようにUIImageの初期化でアイコン名を渡すだけです。 引数のラベルがUIImage(name: "")で…

iOS13のカスタムフォントを試してみる

iOS13から使えるようになっていたカスタムフォントのAPIを試してみました。 この機能を使うと端末へのフォントインストールやフォントの確認ができます。 まずはフォント一覧の取得をしてみようと思います。 最初にテスト用のプロジェクトを作ります。 プロ…

【SwiftUI】GeometryReaderでViewのサイズを取得する

画面サイズによって処理を変えたかったため、GeometryReaderというクラスを使って画面サイズを取得しました。 Viewのサイズは下の形で取得できます。 struct ContentView: View { var body: some View { GeometryReader { geometry in Text(String("\(geomet…

Xcode 12でbuilding for iOS Simulator, but linking in object file built for iOS, for architecture arm64というエラーが出た時の対応

Xcode 12でビルドした時、下のようなエラーが出た時の対応です。 エラーはCocoaPodsで入れたRealmで発生していました。 building for iOS Simulator, but linking in object file built for iOS, for architecture arm64 結論としては、PodfileにEXCLUDED_AR…

CocoaPodsのライブラリをstatic化して高速化

下記事を参考にアプリ起動の高速化を試してみました。 iOSアプリの起動速度を2倍にするために、複数のDynamic FrameworkをStaticにして、ひとつのDynamic Frameworkを作る with Swift | by Muukii (Hiroshi Kimura) | Eureka Engineering | Medium まずはDyn…

gRPCをSwiftで使ってみる

gRPCを使ってgoのサーバーにSwiftでアクセスする処理を実装しました。 Swiftは5.2、Go言語はgo1.14.4、protobufは3.12.3を使っています。 gRPCとは gRPCとはGoogleが開発したRPCを実現するためのプロトコルのことです。 RPCはremote procedure callの略で、…