SwiftUI 围绕中心对象放置

问题描述

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

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

enter image description here

解决方法

我从 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 

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...