Altering Structure with HStack and VStack - Slsolutech Best IT Related Website, pub-5682244022170090, DIRECT, f08c47fec0942fa0

Altering Structure with HStack and VStack

Spread the love

Ranging from iOS 16, SwiftUI supplies AnyLayout and the Structure protocol for builders to create personalized and complicated layouts. AnyLayout is a type-erased occasion of the format protocol. You should utilize AnyLayout to create a dynamic format that responds to customers’ interactions or surroundings modifications.

On this tutorial, you’ll discover ways to use AnyLayout to modify between vertical and horizontal format.

Utilizing AnyLayout

Let’s first create a brand new Xcode challenge utilizing the App template. Identify the challenge SwiftUIAnyLayout or no matter title you like. What we’re going to construct is an easy demo app that switches the UI format whenever you faucet the stack view. The determine under reveals the UI format for various orientations.

SwiftUI AnyLayout - Switch between HStack and VStack

The app initially arranges three photographs vertically utilizing VStack. When a person faucets the stack view, it modifications to a horizontal stack. With AnyLayout, you’ll be able to implement the format like this:

We outline a format variable to carry an occasion of AnyLayout. Relying on the worth of changeLayout, this format modifications between horizontal and vertical layouts. The HStackLayout (or VStackLayout) behaves like a HStack (or VStack) however conforms to the Structure protocol so you need to use it within the conditional layouts.

By attaching the animation to the format, the format change will be animated. Now whenever you faucet the stack view, it switches between vertical and horizontal layouts.

Switching Layouts based mostly on the system’s orientation

Presently, the app lets customers change the format by tapping the stack view. In some functions, you might wish to change the format based mostly on the system’s orientation and display screen measurement. On this case, you’ll be able to seize the orientation change through the use of the .horizontalSizeClass variable:

And you then replace the format variable like this:

Say, for instance, you rotate an iPhone 14 Professional Max to panorama, the format modifications to horizontally stack view.

swiftui anylayout demo

Most often, we use SwiftUI’s built-in format containers like HStackLayout and VStackLayout to compose layouts. What if these format containers will not be ok for arranging the kind of layouts you want? The Structure protocol launched in iOS 16 permits you to outline your individual customized format. All you might want to do is outline a customized format container by creating a kind that conforms to the Structure protocol and implementing its required strategies:

  • sizeThatFits(proposal:subviews:cache:) – stories the scale of the composite format view.
  • placeSubviews(in:proposal:subviews:cache:) – assigns positions to the container’s subviews.


The introduction of AnyLayout permits us to customise and alter the UI format with a pair strains of code. This positively helps us construct extra elegant and fascinating UIs. Within the earlier demo, I confirmed you methods to change layouts based mostly on the display screen orientation. In actual fact, you’ll be able to apply the identical method to different situations like the scale of the Dynamic Sort.

Be aware: If you wish to dive deeper into SwiftUI and entry all of the supply code, you’ll be able to take a look at our Mastering SwiftUI guide, which has been totally up to date for iOS 16 and Xcode 14.

Founding father of AppCoda. Writer of a number of iOS programming books together with Starting iOS Programming with Swift and Mastering SwiftUI. iOS App Developer and Blogger. Comply with me at Fb, Twitter and Google+.

Leave a Reply

Your email address will not be published. Required fields are marked *