1

假设蓝色矩形在红色矩形的中心,绿色需要在顶部,黄色在左侧。

在带有对齐指南的 SwiftUI 中如何做到这一点?没有一个尺寸是已知的,但黄色和蓝色高度匹配,绿色和蓝色宽度匹配。

在此处输入图像描述

4

1 回答 1

0

我从Twitter 上的https://swiftui-lab.com获得了帮助

使用我的辅助方法:

extension View {
    func overlay<Overlay: View>(alignment: Alignment, @ViewBuilder builder: () -> Overlay) -> some View {
        overlay(builder(), alignment: alignment)
    }
}

可以这样做:

Color.red
  .overlay(alignment: .bottom) {
    HStack(alignment: .top, spacing: 0) {
      Color.clear.frame(width: 0)
      Color.yellow
      .alignmentGuide(.top) { $0.height + 10 }
    }
  }
  .overlay(alignment: .trailing) {
    VStack(alignment: .leading, spacing: 0) {
      Color.clear.frame(height: 0)
      Color.blue
        .alignmentGuide(.leading) { $0.width + 10 }
    }
  }
  .padding(100) // padding given for the example 
于 2021-01-22T13:47:47.620 回答