potatotips #67 に参加しました (iOSブログまとめ枠) #potatotips
potatotips #67 に iOS ブログまとめ枠で参加させていただきました。
会場はメルペイさん。
発表時間は各自で管理してくださいの精神、メの社風を感じる #potatotips
— Monkuma👾 (@kumamo_tone) 2019年12月17日
カンファレンスアプリをSwiftUIで作った / Masamichi Ueta さん
Flutter製の2018年製カンファレンスアプリをSwiftUIでリライトした。MVVM、Dark Mode、Localization、Sign in with Appleなどの要素を盛り込んでいる。
Listの同じRowにNavigationLink2個おいたとき、各々別の画面に遷移してほしいんだがそうならなかった。ScrollViewにForEachでVStackを並べることで回避した。
PageViewでpopするとXcode11.2.1のビルドでクラッシュしていたが、Xcode11.3ではクラッシュしなくなっていた。
コードはOSSとして公開している。
ブログにも書いてある。
FlutterをSwiftUIで書き換え、勢いがある #potatotips
— Monkuma👾 (@kumamo_tone) 2019年12月17日
ListだとTableViewになるけどScrollViewにすると全部メモリに展開されてReuseされなそうなのでListでもできてほしいな #potatotips
— Monkuma👾 (@kumamo_tone) 2019年12月17日
GeometryReaderでSwiftUIのViewをキャプチャする / Takeshi Sato さん
Viewのキャプチャ(スクリーンショット)を取りたい。
UIViewだとこうやるよね。でもSwiftUIのViewにはBoundsもCALayerもない。どうするか?
Bounds は GeometryReader で取ることにした。 CALayer は UIView に変換して取ることにした。
geometry.frame(in: .global)
や geometry.frame(in: .local)
で座標を取る。(それぞれUIViewのframeとboundsに相当しそう)
UIView への変換は UIHostingController に渡してやって、UIWindow に add して visible にした状態なら view プロパティから取れる。
let window = UIWindow(frame: CGRect(origin: canvasRect.origin, size: canvasRect.size)) let hosting = UIHostingController(rootView: body) hosting.view.frame = window.frame window.addSubview(hosting.view) window.makeKeyAndVisible() return hosting.view.renderedImage
サンプルコード。
Integrating Function Builder / AkihisaSengoku さん
Function Builderとはなにか、作り方と使い方など。
UICollectionView CompositionalLayoutできれいなGrid Layoutをつくる / Yuichi Kobayashi さん
UICollectionView⁰CompositionalLayout でグリッド作りたいとき、セル間の spacing を指定すると、セルがちゃんと正方形にならないときがあった
— Monkuma👾 (@kumamo_tone) 2019年12月17日
セルのwidthとheightをpriorityを1000 にして Groupのほうをself-sizingにすればOK #potatotips
Swiftサウンドプログラミングをはじめる〜メトロノーム編〜 / teruto_yamasaki さん
3通りの方法でメトロノームを実装してみた。サウンド再生スレッドの優先度は高く保つ。
Playground初心者から脱却するための3つのTips / 417_72ki さん
Playground の中で左のペインを出して New Playground Page すると Playground の中で複数の検証ができるので実は playground 作りまくらなくて良い。
sources/
の中にSwiftファイルを追加できて、処理も共通化できる(注:internal じゃなくて public にする必要がある)
SwiftUI 導入で LLVM のドキュメント読む羽目になった話 / Akkey さん
Xcode Preview が動かないときがあった。どうやら static framework に関係していて、 Linker flags に -fprofile-instr-generate を追加すると動くようになるようだった。なんでなのかを LLVM のドキュメント読んで調べている(情報募集中)。
画面をUITableViewで作るリスクとその対応 / zwtin さん
UITableVIew はパフォーマンスが良いって言うけど有限のリストの場合UIScrollViewにぶちこんだほうがかえってスクロール時にかくつかずに体験がよくなることがある(それはそう)
そのほか
まんぷくむすびはうまい
おにぎりおいしい #potatotips pic.twitter.com/tBkbdTDs6c
— Monkuma👾 (@kumamo_tone) 2019年12月17日