Swiftpack.co - tgrapperon/swiftui-layout-guides as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
See all packages published by tgrapperon.
tgrapperon/swiftui-layout-guides 0.0.3
Expose layout margins and readable content width to SwiftUI's Views
⭐️ 10
🕓 3 weeks ago
iOS macOS watchOS tvOS
.package(url: "https://github.com/tgrapperon/swiftui-layout-guides.git", from: "0.0.3")

SwiftUI Layout Guides

This micro-library exposes UIKit's layout margins and readable content guides to SwiftUI.


Make a view fit the readable content width

Simply call the fitToReadableContentWidth() modifier:

List {
 ForEach(…) {

Expose the layout margins in a block

Wrap your view in the WithLayoutMargins view. The initializer supports two variants: one closure without argument and one closure with a EdgeInsets argument. In this last case, the insets correspond to the layout margins for the content:

WithLayoutMargins { layoutMarginsInsets in
   .padding(.leading, layoutMarginsInsets.leading) 

Expose layout margins and readable content guides in a view

You need two wrap your view in WithLayoutMargins (you can use the argument-less closure). This will populate the content's Environment with the layout margins and readable content in the form of insets.

WithLayoutMargins {

struct Content: View {
  @Environment(\.layoutMarginsInsets) var layoutMarginsInsets
  @Environment(\.readableContentInsets) var readableContentInsets
  var body: some View {
      .padding(.leading, layoutMarginsInsets.leading)

These insets are only valid for the bounds of the root content view. Using them deeper in the hierachy may lead to insconsitent results and you should use the measureLayoutMargins() modifier if you want to refresh the insets for the target view.


Add .package(url: "https://github.com/tgrapperon/swiftui-layout-guides", from: "0.0.1") to your Package dependencies, and then

.product(name: "SwiftUILayoutGuides", package: "swiftui-layout-guides")

to your target's dependencies.


Stars: 10
Last commit: 3 weeks ago
jonrohan Something's broken? Yell at me @ptrpavlik. Praise and feedback (and money) is also welcome.

Release Notes

3 weeks ago

This release slightly improves performance and documentation.

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics