[swift] SwiftUI 뷰의 사이즈 변경

SwiftUI에서 뷰의 사이즈를 동적으로 변경하는 방법을 알아보겠습니다.

1. 프레임 크기 조절

struct ContentView: View {
    @State private var rectangleSize = CGSize(width: 100, height: 100)

    var body: some View {
        Rectangle()
            .frame(width: rectangleSize.width, height: rectangleSize.height)
            .onTapGesture {
                withAnimation {
                    self.rectangleSize = CGSize(width: 200, height: 200)
                }
            }
    }
}

위 예제에서 Rectangle의 크기를 rectangleSize의 값에 따라 동적으로 변경하고 있습니다. onTapGesture에서 withAnimation을 사용하여 애니메이션 효과를 추가했습니다.

2. GeometryReader 사용

struct ContentView: View {
    @State private var rectangleSize: CGSize = .zero

    var body: some View {
        GeometryReader { geometry in
            ZStack {
                Rectangle()
                    .frame(width: self.rectangleSize.width, height: self.rectangleSize.height)
                    .foregroundColor(Color.red)

                Button("Adjust Size") {
                    self.rectangleSize = CGSize(width: geometry.size.width / 2, height: geometry.size.height / 2)
                }
            }
        }
    }
}

GeometryReader를 사용하여 부모 뷰의 크기에 따라 자식 뷰의 크기를 조절하는 예제입니다. Button을 누르면 rectangleSize가 동적으로 변경되고, Rectangle의 크기가 자동으로 업데이트 됩니다.

사이즈를 동적으로 변경하는 두 가지 방법에 대해 알아보았습니다. SwiftUI에서는 다양한 방법으로 뷰의 사이즈를 조절할 수 있습니다.

참고 자료