🔨

SwiftUIの画面が再描画されたタイミングをログで取得する

2023/12/07に公開

はじめに

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