SwiftUI 位置情報をトラッキングする
LocationManager でトラッキングした位置情報を、地図上に表示する SwiftUI のサンプルを作成した。上のリンクから完全なプロジェクトを持ってこれる。
動作させると、こんな感じ。
シミュレータの設定で Freeway Drive
にしておくと自動で位置が更新され、確認しやすい。
位置情報の取得自体は SwiftUI 以前とあまり変わらないが @ObservedObject
@Published
など、データの配信・伝搬の概念がキモと感じた。
FFmpeg 動画から gif へ変換(フレームレートとサイズを指定)
よく忘れるのでメモ。
ffmpeg が入っていなかったらインストール。
$ brew install ffmpeg
フレームレートを 10 にして、サイズを横幅 320px にして gif へ変換する場合はこれ。
$ ffmpeg -i in.mov -r 10 -vf scale=320:-1 output.gif
Google Swift Style Guide
https://google.github.io/swift/
Google は Swift のコーディングガイドラインを公開している。Lint のルールが決まっていない、指標になる標準的なルールを探している場合、このガイドを参考にすると良いと思う。
以下、いくつかルールを紹介する。
空白文字
https://google.github.io/swift/#whitespace-characters
空白文字には半角スペース(U+0020)を使用する。
タブ文字はインデントに使用しない。
列の制限
https://google.github.io/swift/#column-limit
一行のコードは100文字が制限。ただし、例外もある。
例外)
- 1行である必要があるテキスト(例:コメント内の長い URL)
- インポート文
- 別のツールによって生成されたコード
セミコロン
https://google.github.io/swift/#semicolons
ステートメントの終了にセミコロンを使用しない。つまり、セミコロンを使用するのは、文字列リテラルかコメント内だけになる。
プロパティ
https://google.github.io/swift/#properties
タプルをのぞき、 let, var で宣言できる変数は1つのみとする
// これは NG var a = 5, b = 10
// これは OK var a = 5 var b = 10 let (quotient, remainder) = divide(100, 9)
グローバル定数
ほかの変数の同じようにローワーキャメルケースで命名する。また、g や k で始まるハンガリアン記法は使用しない。
// これは OK let secondsPerMinute = 60
// これは NG let SecondsPerMinute = 60 let kSecondsPerMinute = 60 let gSecondsPerMinute = 60 let SECONDS_PER_MINUTE = 60
xxHash v0.7.2 リリース
https://github.com/Cyan4973/xxHash/releases/tag/v0.7.2
これは 2019/10/8(JST)にリリースされた xxHash v0.7.2 についてのメモである。
リリースノート(意訳)
xxHash v0.7.2 は新しい 128bit ハッシュのためのメンテナンスリリースである。
XXH3 にはまだ Experimental(実験的)というラベルがついていることに注意してください。
また、このバージョンとこれまでのバージョンの戻り値は、互換性がないことに注意。
以下、詳細。
- 特定の長さの入力に対する衝突率を修正
VSX
とMEON
の改良XXH_VECTOR=0
の場合のコードパスの改良xxhsum
(コマンドライン・ユーティリティ)-H2
で 128bit ハッシュを生成できます(しかし、128bit ハッシュはまだ開発途中のため、実験目的であることに注意!)-q
オプションでステータスの通知を削除できます
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") .listRowBackground(Color.purple) } .foregroundColor(Color.white) .onAppear { UITableView.appearance().backgroundColor = .lightGray } .onDisappear { }
こんな感じで、項目(Row)の背景色と、リスト自体の背景色が変えられる。
List の背景は appearance を使用する以外に、簡単に変更できる方法はないのかしら。。
補足。
このサンプルのプロジェクトは GitHub にある。
https://github.com/daisuke-t-jp/SwiftUIListColorSample
SwiftUI Text で文字列リテラルを扱う
Text("あ")
だと以下のビルドエラーが出ることがある
'(LocalizedStringKey) -> Text' is not convertible to '(LocalizedStringKey, String?, Bundle?, StaticString?) -> Text'
なのでこっちを使う
Text(verbatim: "あ")
init(verbatim:) - Text | Apple Developer Documentation
これでエラーが消える
・・・補足・・・
今は下の環境で試しているが
上記ビルドエラーが出る箇所と出ない箇所があり、安定していないのか、そこのところが不明確・・・