有时候,我们会遇到类似这样的需求,其中一种实现方式就是对alignmentGuide的灵活运用,如果您不太清楚刚刚这个名字的意思,我推荐您先看看我的这篇文章,算是alignmentGuide的基础
博客地址:alignmentGuide基础
写在前面
代码来自https://stackoom.com/question/3ytbp/带包装的SwiftUI-HStack
如侵权请联系我删除。
我添加了一些关键的打印语句和大量注释来探索这份代码。
正文
先贴出源码,如果看着比较费劲可以跳过这部分,直接看我加了一些注释的版本
import SwiftUI
struct TestWrappedLayout: View {
@State var platforms = ["Ninetendo", "XBox", "PlayStation", "PlayStation 2", "PlayStation 3", "PlayStation 4"]
var body: some View {
GeometryReader {
geometry in
self.generateContent(in: geometry)
}
}
private func generateContent(in g: GeometryProxy) -> some View {
var width = CGFloat.zero
var height = CGFloat.zero
return ZStack(alignment: .topLeading) {
ForEach(self.platforms, id: \.self) {
platform in
self.item(for: platform)
.padding([.horizontal, .vertical<