โœจcompositing group

ๆ‰€ๆœ‰็š„ container view (HStack, VStack, ZStack ็ญ‰) ้ƒฝๆœ‰ๅœ–ๅฑค็š„ๆ•ˆๆ‡‰๏ผŒๅพŒไพ†็š„ view ็š„ๅœ–ๅฑค้ƒฝๆ˜ฏ้ซ˜ๆ–ผๅ‰้ข็š„ view๏ผŒๆ‰€ไปฅๅฆ‚ๆžœๆœ‰ๅฝฑๅญ็š„่ฉฑ๏ผŒๆœƒ็–Šๅœจๅ‰้ข็š„ view ่บซไธŠใ€‚ไฝ†ๅœจ container view ่บซไธŠ็”จ .compositingGroup() ๅฐฑๅฏไปฅๅฐ‡ๆ‰€ๆœ‰ๅœ–ๅฑคๅŒ–็‚บใ€ŒๅŒไธ€ๅœ–ๅฑคใ€ใ€‚

import SwiftUI

typealias HA = HorizontalAlignment
typealias VA = VerticalAlignment

let w: CGFloat = 100
let h: CGFloat = 50

let r1 = Rectangle().padding(1).frame(w, h).foregroundColor(.pink)
let r2 = Rectangle().padding(1).frame(h, w).foregroundColor(.blue)

struct MyRects: View {
    var body: some View {
        ZStack {
            r1
                .alignmentGuide(HA.center) {  $0[.leading] }
                .alignmentGuide(VA.center) {  $0[.bottom] }
            r1
                .alignmentGuide(HA.center) {  $0[.trailing] }
                .alignmentGuide(VA.center) {  $0[.top] }
            r2
                .alignmentGuide(HA.center) {  $0[.trailing] }
                .alignmentGuide(VA.center) {  $0[.bottom] }
            r2
                .alignmentGuide(HA.center) {  $0[.leading] }
                .alignmentGuide(VA.center) {  $0[.top] }
        }// VStack (container)
        .aspectRatio(1, contentMode: .fit)
    }
}

// live view
struct ContentView: View {
    var body: some View {
        HStack {
            MyRects()                // โญ๏ธ ไธๅŒๅœ–ๅฑค๏ผŒๅฝฑๅญๆœƒๆœ‰ๅฑคๆฌกๆ„Ÿ
            MyRects()
                .compositingGroup()  // โญ๏ธ ่ฎŠ็‚บๅŒไธ€ๅœ–ๅฑค
        }// HStack
            .padding()
            .shadow(color: .black, radius: 4, x: 4, y: 4)
            .background(Color.gray)
    }
}

Last updated