プログラミング

UIResponder.keyboardDidShowNotification が他のアプリに切替した時にも通知される問題

iOS アプリでキーボードが表示されたイベントを知りたい時に UIResponder.keyboardDidShowNotification を通知を受ける。 コードは以下のたとえば下のようになる。 import UIKit import os class ViewController: UIViewController { override func viewDidL…

Python | POI データを取得して、地点の天気を得る

https://github.com/daisuke-t-jp/overpass_weather 今回作成したプロジェクトは GitHub に置いた。 概要 OpenWeatherMap API を使うと、呼び出し頻度の制限はあるが、無料で天気情報を取得できる。 https://openweathermap.org/ この取得する天気情報を、意…

SwiftUI の EdgeInsets で zero プロパティを使用する

iOS 13 SDK の時点では UIKit の UIEdgeInsets には zero プロパティがあるが https://developer.apple.com/documentation/uikit/uiedgeinsets/1624518-zero SwiftUI の EdgeInsets には zero プロパティが無い https://developer.apple.com/documentation/s…

SwiftUI List の高さを、項目の数と高さに合わせてちょうどフィットさせる

サンプルは GitHub にある。 List の高さが項目に対して、ちょうどフィットされていないと以下の課題が発生する List の高さが項目表示に足りない -> List 内スクロールが発生する List の高さが項目表示より大きい -> List が大きすぎて、見た目が悪い これ…

blurhash とは

blurhash という興味深い OSS を発見したのでメモ。 「画像」から「ブラー画像」を作るための「ハッシュ値」を作成できる 「ハッシュ値」から、ブラー画像を作成できる イメージはこんな感じ。 で、これは何に使うかと言えば、たとえば「アプリがサーバから…

OSM データから POI データを抽出する

OSM データの読みだしには Overpass API というのがあり、それを介してデータを取得することができる。 手取り早くこれを試すには GUI で Overpass API を試せるサイトがあるので、これを使ってみる↓ https://overpass-turbo.eu/ この左側に以下のクエリを書…

SwiftUI の View 上で、雨が降るアニメーションをつくった

SwiftUI の View に多数の Circle を表示して、雨っぽいアニメーションを作った。 UIView の drawRect をオーバライドしなくてもこのくらいはできるんだなあ。。

SwiftUI の UIView を画像にして保存するサンプル

SwiftUI で UIView の内容を画像(UIImage)にして、アルバムに保存するサンプルを作った。 SwiftUI は現在の View を直接 UIView として扱うことは難しいので UIApplication 経由で UIView を取得する感じになる。 extension UIView { func image() -> UIIm…

SwiftUI(iOS 13.3) / ScrollView 上に配置した List の項目選択が残る問題

SwiftUI iOS 13.3 で ScrollView 上に List を配置する その List から NavigationLink で遷移する を試すと、項目の選択が残ったままになる。 再現させる最小限のサンプルを GitHub においた↓ iOS 13.2 の時点で発生していたんだけど、 iOS 13.3 になっても…

複数の SVN ワーキングコピーの内容を最新に保つ

SVN の GUI クライアント(たとえば TortoiseSVN)を使うと、簡単に SVN 操作をできる。 しかし、複数の SVN ワーキングコピーに対して一括で操作したい場合、ひとつひとつ手作業をすると手間になる。 具体的には複数の SVN ワーキングコピーに対して、以下…

SwiftUI TextField の onEditingChanged() をハンドルする

SwiftUI TextField の onEditingChanged() を使ってみるサンプル。 今回のサンプルは 2つの TextField の入力を足し算するが TextField 編集中は、=(イコール)ボタンが押せない、という設定で試してみた。 初期状態 ボタンは押せる 編集開始した状態 ボタ…

SwiftUI NavigationView の Push/Pop をコードで実行する

SwiftUI の NavigationView の Push(進む)と Pop(戻る)をユーザのアクションではなく、コードで(pragmatically)実行する調査をしたサンプル。 サンプルはボタンアクションで Push/Pop するが、この調査結果により、コードで Push/Pop 実行できることが…

SwiftUI NavigationLink の有効/無効を切り替える

SwiftUI で NavigationLink の有効/無効の切替サンプルを作った。 ざっくりいうと NavigationLink は hidden にしておいて直接操作させず、代わりに Button のアクションを一枚噛ませて NavigationLink がアクションする、という流れにするとできた。 Naviga…

SwiftUI KeyboardObserving を使用して TextField がキーボードに隠れる問題に対応する

入力したい TextField にタッチする→表示されたキーボードにより TextField が隠れる→入力しづらい という問題。 これは Objective-C 時代からあり、よく対処されてきた問題なのだが SwiftUI の場合は、 GitHub にある KeyboardObserving という OSS で対応…

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)

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