カルボナーラ街道

計測と観察

SwiftUI

transformPreference(_:_:) を使った子要素からの値伝搬

開発環境 $xcodebuild -version Xcode 15.2 Build version 15C500b 動作確認したシミュレータ: iPhone 15 Pro Max(iOS 17.2) モチベーション SwiftUIでviewの親と子それぞれに preference(key:value:) を指定すると、親のPreference値だけがその上位存在の o…

自分用運動記録アプリ ver.3を作った

開発環境 モチベーション つくったもの 過去ver メモ 屋内のワークアウト判定はmetadataから取る Chartには整頓したデータを渡すと良いかも 開発環境 $ Xcode 14.3 Build version 14E222b モチベーション 運動継続のモチベーションを維持したい 距離・時間・…

SwiftUIにおける条件分岐の注意点

開発環境 TL;DR モチベーション SwiftUIのViewの拡張メソッドとしてのif-else 公式推奨のやり方 なぜ分岐をさせることが良くないのか おわりに 参考 開発環境 $ Xcode 14.3 Build version 14E222b TL;DR SwiftUIにおける条件分岐の注意点として、以下のこと…

SwiftUIで意味的最小粒度のViewを作るための個人的思想

開発環境 $ xcodebuild -version Xcode 14.3 Build version 14E222b モチベーション SwiftUIのViewの組み方は色々ある。今の自分の考えをメモしておく。 先行事例 iOSDC Japan 2022でウホーイさんが発表された内容がしっくりきている。 speakerdeck.com 単純…

SwiftUIである円の円周上に別の円の中心を持ってきたい時はPreferenceKeyなしでも実装できそう

www.youtube.com 見た、良かった。自分もやっていかねばという気持ちになった。 本筋ではないが、スライドの36PでSwiftUIのViewの実装事例が紹介されている。 speakerdeck.com PreferenceKeyと算数で実装したケースだったが、overlayのalignmentを.topTraili…

SwiftUIでは可能な限り値を丸めずにviewに渡すことを心がけている

主語大きい。何が言いたいかと言うと、よく利用するIdentifiableを準拠させる構造体のプロパティは可能な限り丸めずに渡した方がIDの一意性を担保しやすい。 開発環境 $ xcodebuild -version Xcode 14.1 Build version 14B47b SwiftUIにおけるIdentifiable W…

SwiftUIでGraphQL Fragment Colocation利用時におけるプレゼンテーションロジックのテストを考える

テストを考える季節。 開発環境 > xcodebuild -version Xcode 14.0 Build version 14A309 apollo-ios: 0.53.0 モチベーション Fragment Colocation利用時におけるプレゼンテーションロジック(ここでは表示用の小数点丸め込みなどのロジックを指す)はどこで…

SwiftUI.GroupをViewのbodyの直下に置いた時の挙動

開発環境 > xcodebuild -version Xcode 14.0 Build version 14A309 モチベーション SwiftUIのGroupを具体例を踏まえて理解しようと思って実験していたら意味わからんくなったので記事に残す。 SwiftUI.Group Group | Apple Developer Documentation HStack, …

自作アプリでGraphQLを使うための準備をした

ややポエム寄り。 開発環境 > go version go version go1.18.4 darwin/amd64 > xcodebuild -version Xcode 14.0 Build version 14A5228 モチベーション iOSのHealthKitで取得できるサイクリングやランニングのワークアウト情報をGraphQLで管理できるようにし…

SwiftUIでTextのマスク処理

開発環境 > xcodebuild -version Xcode 14.0 Build version 14A5228q Xcodeはbetaだが本記事の内容はiOS16未満のAPIを使用。 モチベーション マスク処理やってみたいけどパッと実装が思いつかなかったので書いてみる。 お題 https://youtu.be/j3INdAPAO0o?t=…

SwiftUIアニメーション練習: rotationEffectとscaleEffect

開発環境 > xcodebuild -version Xcode 13.1 Build version 13A1030d 記事中のスクリーンショットのOS: iOS15 モチベーション (シャニマス4周年WEB CM第3弾~イルミネーションスターズ・アルストロメリア・シーズ篇~【アイドルマスター】 - YouTube より) …

SwiftUI で 外部API を叩く

本記事は下記を参考にしています。 qiita.com モチベーション 昨日作った API を SwiftUI から利用したい SwiftUI で 外部API を叩いた経験が無いのでやりたい 開発環境 > xcodebuild -version Xcode 13.1 Build version 13A1030d つくったもの コード モデ…

SwiftUIのLazyVGridを試す

SwiftUIでUICollectionViewをUIKitを使わずにどう実現するんだ?と思い調べていたら LazyVGrid を発見。試す! 開発環境 > xcodebuild -version Xcode 13.1 Build version 13A1030d StackとGridの棲み分け Stackはすべて生成しきってから表示、Grid*1は必要…

SwiftUI x Combine 練習1

本記事は下記を参考にしています。 blog.studysapuri.jp 前々からやりたかったSwiftUIとCombineを組み合わせた実装をやってみる! 開発環境 > xcodebuild -version Xcode 13.1 Build version 13A1030d 作ったもの 2.5秒ごとに [1, 2, 3, 4, 5] をシャッフル…

SwiftUIのTextEditorの実体がUIKitのUITextViewであることを確認する

本記事は以下記事の内容を参考にしています。 qiita.com 開発環境 # Xcode > xcodebuild -version Xcode 13.1 Build version 13A1030d # lldb (lldb) version lldb-1300.0.32.4 Swift version 5.5.1-dev はじめに tokizuoh.hatenablog.com (as TextEditor is…

SwiftUIの@FocusStateを試す

UITextViewの設定がTextEditorに反映されるソースを求めて*1インターネットの海をさまよっていたときに出会ったproperty wrapper。 使ったことが無かったので試す。 開発環境 > xcodebuild -version Xcode 13.1 Build version 13A1030d 記事中のスクリーンシ…

SwiftUIのTextEditorのテキストの余白はどう調整する?

結論 UITextView.appearance().textContainerInset = UIEdgeInsets(top: 10, left: 50, bottom: 40, right: 20) 開発環境 > xcodebuild -version Xcode 13.1 Build version 13A1030d 記事中のスクリーンショット: iPhone 13 Pro Max / iOS15.0 背景 前にUITe…

SwiftUIで複数行の入力を行いたい時はTextEditorを使おう

前にUITextViewの記事を書いた時にSwiftUIだとどうやるんだ?と思ったのでやる。 tokizuoh.hatenablog.com 開発環境 > xcodebuild -version Xcode 13.1 Build version 13A1030d 記事中のスクリーンショット: iPhone 13 Pro Max / iOS15.0 TextFieldのheight…