Alignments are critical in the building of the UI. In the previous post, we have covered vertical alignments, but in this one, we will focus on horizontal alignments.


Alignments are critical in the building of the UI. While SwiftUI spacing between UI elements follows the Human Interface Guidelines by Apple out of the box, some UI elements need some adjustments to they positing regarding other UI elements. In this post, we will cover the basics of alignments. We have two types of alignments Horizontal and Vertical.


Even if SwiftUI has a lot of available UI elements that we can use to build our app, they’re a lot of missing UI elements from UIKit and a lot of open-source UI elements that we might want to use in our projects.


SwiftUI is a powerful framework that allows you to write UI for different screen sizes. But even if we write our app only for iOS, we might find ourselves having our UI shrunk on smaller devices. For such cases, SwiftUI lets us decide what view is more important than another.


One of the SwfitUI principles is that every piece of data has a single source of truth. In SwiftUI, we have two options for managing these sources of truth: @State or BindableObject.


Earlier, we have discussed about Environment and how to get predefined values from it. In this article, we will discuss how to set Environment value.


@Published is a property wrapper, that was introduced in Swift 5.1. @Published property wrapper augments properties by adding willSet observer.


@ObservedObject is one of SwiftUI property wrappers which came up in Swift 5.1. If we have data that should be shared between multiple views, and all of them should automatically update when data changes, then @ObservedObject is our way to go.


When we create our first view in SwiftUI, the framework generates an Environment for it. SwiftUI uses Environment to store different system settings like the color scheme and app-specific stuff like default font.


If we have data that should be shared between multiple views, and all of them should automatically update when data changes, then @EnvironmentObject is our way to go.The most crucial advantage of EnvironmentObject is that we don’t need to pass it to each view that needs it.