Ole Begemann, 2022-09
Based on: objc.io, Swift Talk episode 318, Inspecting SwiftUI's Layout Process (2022-08)
Inspect the layout algorithm of SwiftUI views, i.e. what sizes views propose to their children and what sizes they return to their parents.
iOS 16.0 or macOS 13.0 (requires the Layout
protocol).
-
Edit the
subject: some View
property inContentView
. It should contain the view tree you want to inspect. -
Add
.debugLayout()
to each view in the view tree whose layout algorithm you want to inspect.Example of a
subject
property with a fewdebugLayout
inspection points:var subject: some View { Text("Hello world") .debugLayout("Text") .padding() .debugLayout("padding") .background { Color.yellow .debugLayout("yellow") } .debugLayout("background") }
-
Build and run the app.
- The subject view is displayed on top.
- The table on the bottom displays the sizes that are being proposed at each inspection point in the subject view ("Proposal", and the resulting view sizes ("Response").
- You can use the sliders to modify the size proposed to the subject view.
- Some views cache certain layout information. Press "Reset layout cache" after modifying the sliders to reset the caches.