Enum을 활용한 UI 그리기

작성일

enum ButtonType {
    case primary
    case secondary
    case destructive
}

struct CustomButton: View {
    var buttonType: ButtonType

    var body: some View {
        switch buttonType {
        case .primary:
            return AnyView(Button("Primary Button").foregroundColor(.white).padding().background(Color.blue).cornerRadius(5))
        case .secondary:
            return AnyView(Button("Secondary Button").foregroundColor(.blue).padding().background(Color.white).cornerRadius(5).overlay(RoundedRectangle(cornerRadius: 5).stroke(Color.blue, lineWidth: 2)))
        case .destructive:
            return AnyView(Button("Destructive Button").foregroundColor(.white).padding().background(Color.red).cornerRadius(5))
        }
    }
}

이런 방식으로 뷰를 작성한 후,

struct ContentView: View {
    var body: some View {
        VStack {
            CustomButton(buttonType: .primary)
            CustomButton(buttonType: .secondary)
            CustomButton(buttonType: .destructive)
        }
    }
}

이렇게하면, 뷰를 원하는 타입으로 분리해서 사용할 수 있다.