前言SwiftUI 的各种堆栈是许多框架中最基本的布局工具,能够让我们定义组视图,这些组视图可以按照水平、垂直或覆盖视图对齐。当涉及到水平和垂直的变体时( HStack 和 VStack ),我们需要在这两者之间动态的切换。举个例子,假如我们正在构建一个 app 其中包含 LoginActionsView ,一个让用户登录时在列表中选择操作的类:structLoginActionsView:View{...varbody:someView{VStack{Button("Login"){...}Button("Resetpassword"){...}Button("Createaccount")
简介今年 SwiftUI 新增最好的功能之一必须是布局协议。它不但让我们参与到布局过程中,而且也给了我们一个很好的机会去更好的理解布局在 SwiftUI 中的作用。早在2019年,我写了一篇文章SwiftUI中frame的表现[1],其中,我阐述了父视图和子视图如何协调形成最终视图效果。那里描述的许多情况需要通过观察不同测试的结果去猜测。整个过程就像是发现外星行星,天文学家发现太阳亮度微小的减少,然后推断出这一定是行星过境(了解行星过境[2])。现在,有了布局协议,就像用自己的眼睛在遥远的太阳系漫游,令人振奋。创建一个基础布局并不难,只需要实现两个方法。尽管如此,我们仍然有很多选择去实现一个
简介今年 SwiftUI 新增最好的功能之一必须是布局协议。它不但让我们参与到布局过程中,而且也给了我们一个很好的机会去更好的理解布局在 SwiftUI 中的作用。早在2019年,我写了一篇文章SwiftUI中frame的表现[1],其中,我阐述了父视图和子视图如何协调形成最终视图效果。那里描述的许多情况需要通过观察不同测试的结果去猜测。整个过程就像是发现外星行星,天文学家发现太阳亮度微小的减少,然后推断出这一定是行星过境(了解行星过境[2])。现在,有了布局协议,就像用自己的眼睛在遥远的太阳系漫游,令人振奋。创建一个基础布局并不难,只需要实现两个方法。尽管如此,我们仍然有很多选择去实现一个