プログラミング

SwiftUI ビュー内に直接配置するビューが多くてビルドエラーになる場合

現象 Xcode 10.15.1 / Swift 5.1.2 ドキュメントのどこに記載があるかは不明だが SwiftUI でビュー内に配置できるサブビューは 10 個までのようだ。 たとえば struct ContentView: View { var body: some View { VStack { Text("1") Text("2") Text("3") Tex…

SwiftUI @State/@ObservableObject/@EnvironmentObject のメモ

それぞれの違いなどをメモする。 間違いあるかもしれない。 @State State - SwiftUI | Apple Developer Documentation SwiftUI Framework に含まれる。 概要 @State の値が変更されると、ビューの表示は再計算される。 State からバインディングを取得するに…

【SwiftUI】TextField で金額を入力する

NumberFomatter を TextField に設定して、以下の動作を確認 米ドル、ユーロ、日本円入力のテスト アルファベットなどの金額ではない入力は、キーボードを閉じたタイミングで消され、訂正される 入力可能な金額の最高値 入力可能な小数点以下の桁数 サンプル…

【SwiftUI】背景タッチで TextField のキーボードを閉じる

👆こんな感じに。 サンプルコードは以下。

Xcode で "Unable to boot the Simulator" が発生してシミュレータが起動しない

以下の Xcode が入っている環境(プロジェクトにより使用する Xcode のバージョンを切り替えしている)で Xcode 10.1 Xcode 11.2 Xcode 11.2.1 のアップデートがあったのでこれを取り込んだ。 (これが原因かどうか分からないが) その後 Xcode 10.1 の方の…

Cppcheck を試す

http://cppcheck.sourceforge.net/ macOS だと brew 経由で cppcheck をインストールできる。 $ brew install cppcheck cppcheck を試してみる $ cppcheck --enable=all <対象フォルダ or 対象ソース> 2> cppcheck.log これで cppcheck.log にチェック結果…

CMake で C ファイルのビルド環境をつくる

macOS 環境で CMake を試してみる。 CMake を使用することで環境に依存しないビルドのための作業を自動できる。 具体的にはソースファイルから環境によってことなるビルド構成ファイル(Makefile, Xcode プロジェクト)を作成できる。 https://cmake.org/ 関…

GCC で C ファイルをコンパイルする

https://gcc.gnu.org/ GCC(GNU コンパイラ コレクション)を使って C ファイルのコンパイルを試す。 macOS であれば GCC は最初からインストールされている。 テスト用のファイル 今回は以下のファイルでテストする main.c #include <stdio.h> #include "sub.h" int </stdio.h>…

malloc に代わるアロケーターいろいろ

jemalloc https://github.com/jemalloc/jemalloc http://jemalloc.net/ Facebook で採用されていることが有名 https://www.facebook.com/notes/facebook-engineering/scalable-memory-allocation-using-jemalloc/480222803919 FreeBSD にも組み込まれている …

rbenv 導入メモ

これは macOS での rbenv 導入に関するメモである。 rbenv / https://github.com/rbenv/rbenv rbenv 導入前の問題 fastlane など Ruby に関係したツールを macOS にインストールする場合、以下の問題が起きる macOS にプリインストールされている Ruby バー…

AVCaptureSession でマイク入力を得る / AudioBufferList.allocate() 後のメモリリーク

https://github.com/daisuke-t-jp/AVCaptureAudioDataOutputSampleBufferTesting iOS でマイク入力を取得してみたかったので試してみた。↑が、そのサンプルプロジェクト。 今回、いろいろなプロジェクトを参考にしてやってみたのだが、気になる点がひとつ。 …

SwiftUI 位置情報をトラッキングする

LocationManager でトラッキングした位置情報を、地図上に表示する SwiftUI のサンプルを作成した。上のリンクから完全なプロジェクトを持ってこれる。 動作させると、こんな感じ。 シミュレータの設定で Freeway Drive にしておくと自動で位置が更新され、…

Google Swift Style Guide

https://google.github.io/swift/ Google は Swift のコーディングガイドラインを公開している。Lint のルールが決まっていない、指標になる標準的なルールを探している場合、このガイドを参考にすると良いと思う。 以下、いくつかルールを紹介する。 空白文…

SwiftUI List の色を変更する

例えば、こういったコードで List { Text("Melon") .listRowBackground(Color.green) Text("Banana") .listRowBackground(Color.yellow) Text("Apple") .listRowBackground(Color.red) Text("Prune") .listRowBackground(Color.blue) Text("Grape") .listRow…

SwiftUI Text で文字列リテラルを扱う

Text("あ") だと以下のビルドエラーが出ることがある '(LocalizedStringKey) -> Text' is not convertible to '(LocalizedStringKey, String?, Bundle?, StaticString?) -> Text' なのでこっちを使う Text(verbatim: "あ") init(verbatim:) - Text | Apple D…

macOS Catalina 10.15 GM seed (19A582a)

数日試した結果、特に問題なく動作している

Swift Singleton pattern

class Singleton: NSObject { public static let sharedInstance = Singleton() private override init() { super.init() // Add initialization... } }

Swift UserDefaults の synchronize() は不要

https://developer.apple.com/documentation/foundation/userdefaults/1414005-synchronize Waits for any pending asynchronous updates to the defaults database and returns; this method is unnecessary and shouldn't be used. かつては UserDefaults …

Swift ケルビンから摂氏、ケルビンから華氏へ変換する

import Foundation func kelvin2Celsius(_ kelvin: Float) -> Float { return kelvin - 273.15 } func celsius2Kelvin(_ celsius: Float) -> Float { return celsius + 273.15 } func kelvin2Fahrenheit(_ kelvin: Float) -> Float { return kelvin * (9.0 /…

SwiftUI プレビューのデバイスを指定する、複数指定する

コード previewDevice() でデバイスを指定できる 例として iPhone SE, iPhone XS Max をプレビューする import SwiftUI struct ContentView: View { var body: some View { VStack { Text("Hello") .font(Font.custom("AvenirNext-Heavy", size: 100)) } .ba…

macOS Catalina 10.15 Beta をインストールして Xcode / SwiftUI の Canvas Preview を試す

はじめに Xcode 11 をインストールして SwiftUI を試した。 SwiftUI のチュートリアルはここにある。 https://developer.apple.com/tutorials/swiftui/creating-and-combining-views これをみると、コーディングした結果が、リアルタイムでプレビュー確認で…

iOS Wave Animation

iOS で波のアニメーションを調べると、いろいろ OSS があったのでメモとして残す LKAWaveCircleProgressBar WaveLoadingView SCWaterWave

OpenWeather から気象情報を取得する

OpenWeather https://openweathermap.org/ はじめに OpenWeather の API を調査し、気象データの取得をテストする 2019/9/24(JST)の情報であることに注意 OpenWeather とは 2014年に設立されたビッグデータ、データ処理、衛星画像処理の企業 本社はイギリ…

Docker ディスクイメージのファイルサイズを変更する

環境 Docker Desktop Community for Mac : Version 2.1.0.3(38240) 手順 !この手順を行うと、今あるすべてのイメージ / コンテナが失われることに注意! メニューから Preferences を選び、 Preferences のウインドウの中から Disk タブを選択する この画面…

Metal から広がるフレームワーク群

はじめに Metal とはなにか? またそれから派生したフレームワークを把握する Metal 登場前 (iOS 2 〜) iOS 2 以降の時代、3D グラフィック処理をするためには OpenGL ES が案内されていた OpenGL ES の ES は Embedded Systems.(組み込みシステム) 以下に…

Google Engineering Practices Documentation

Google がこれまで蓄積してきた開発に関する知識、経験、手法を公開した。 Google Engineering Practices Documentation | eng-practices 非公式だが、日本語翻訳されたドキュメントも存在する。 Google エンジニアリング・プラクティス ドキュメント | eng-…

CocoaPods could not find compatible versions for pod "xxx"

あるプロジェクトが CocoaPods でライブラリの依存管理をしていたので pod install すると $ pod install Analyzing dependencies [!] CocoaPods could not find compatible versions for pod "SwiftLint": In snapshot (Podfile.lock): SwiftLint (= 0.33.0…

WKWebView の読み込み進捗を表示する

はじめに iOS の WebView の読み込み進捗を示すプログレスバーを表示させたい iOS 5 以降 / Objective-C の時代には プログレス表示に NJKWebViewProgressView を使用していたが WebKit の WKWebView(not UIWebView) と Swift のあたらしい KVO の仕組み(…

パフォーマンスを高める Swift の記述

はじめに Swift の実行速度を向上させたくドキュメントを探すと以下が見つかった。 swift/OptimizationTips.rst at master · apple/swift · GitHub この中から気になったトピックをメモする。 Dynamic Dispatch(動的な呼び出し)を削減する Swift は Object…

MKMapView の地図タイルをオーバーレイする

目的 iOS の MKMapView で表示する地図タイルを標準以外に差し替えたい(ベースタイルの変更) またベースの地図タイルの上に、透明度のあるレイヤーをオーバーレイすることも試したい(範囲を示す、情報を含むタイルをベースに重ねる) 使用するタイル 今回…