import SwiftUI
import GeometryKit // for `proxy.size.bottomRight`
struct AlignmentInGeometryReader: View {
// color swatch
func colorSwatch(_ c: Color, _ opacity: CGFloat = 0.9, size: CGFloat = 40) -> some View {
c.opacity(opacity)
.frame(width: size, height: size)
.shadow(radius: 6)
}
var body: some View {
// ⭐️ GeometryReader 負責將子視圖對齊於「左上角」❗️
GeometryReader { proxy in
// ⭐️ 子視圖預設對齊左上角
colorSwatch(.red, size: 100)
colorSwatch(.orange, size: 80)
colorSwatch(.yellow, size: 60)
colorSwatch(.green)
// ⭐️ 子視圖可用 .position() 自己選位置
// ⭐️ .position() 設定的是子視圖「中心點」的位置(相對於 GeometryProxy)
colorSwatch(.blue, 0.5)
.position(.zero) // ⭐️ 左上角
colorSwatch(.purple, 0.5)
.position(proxy.size.bottomRight) // ⭐️ 右下角 // 🌀 GeometryKit
}// GeometryReader
.frame(width: 300, height: 40) // ⭐️ GeometryReader 母視圖尺寸
.border(.white.opacity(0.6))
.overlay {
Text("**`GeometryReader`**") // Markdown
.font(.title3)
.opacity(0.8)
.shadow(radius: 4)
}// overlay
}// body
}