🔨
SwiftUIの画面が再描画されたタイミングをログで取得する
はじめに
SwiftUIでは、Stateが更新されるたびにbodyの中が更新されるので、bodyの中にloggerを入れることで画面更新回数を調べることができます。
struct RefreshChecker {
init() {
print("refreshed!")
}
}
struct ContentView: View {
var body: some View {
let checker = RefreshChecker()
// view ...
このようにすると画面が更新されるたびにRefreshCheckerのinitが走ってログを取ることができます!
まとめ
画面が重いな。。。と思ったら一回画面更新の回数を疑いたい。State更新->View再描画->State更新...などの無限ループが起きていたり、不要に更新し過ぎていたりする可能性あり。
Discussion