코드를 10배 더 깔끔하게 만드는 5가지 SwiftUI 팁

발행: (2026년 2월 1일 오전 03:36 GMT+9)
2 min read
원문: Dev.to

Source: Dev.to

1. 재사용 가능한 ViewModifier 만들기

같은 수식자를 반복하는 대신, 커스텀 ViewModifier를 정의하고 뷰 확장(extension)으로 노출합니다.

struct PrimaryButtonStyle: ViewModifier {
    func body(content: Content) -> some View {
        content
            .font(.headline)
            .foregroundColor(.white)
            .padding()
            .background(Color.blue)
            .cornerRadius(10)
    }
}

extension View {
    func primaryButtonStyle() -> some View {
        modifier(PrimaryButtonStyle())
    }
}

// Usage
Text("Hello")
    .primaryButtonStyle()

2. 단일 사용이라도 서브‑뷰 추출하기

큰 뷰 본문은 빠르게 읽기 어렵습니다. 구별되는 부분을 별도의 View 구조체로 분리하세요.

struct ProfileView: View {
    var body: some View {
        VStack {
            ProfileHeader()
            ProfileStats()
            ProfileActions()
        }
    }
}

3. 조건부 콘텐츠에 @ViewBuilder 사용하기

분기 UI 로직을 @ViewBuilder가 붙은 계산된 프로퍼티나 함수에 캡슐화합니다.

@ViewBuilder
var content: some View {
    if isLoggedIn {
        HomeView()
    } else {
        LoginView()
    }
}

4. 간격 값 중앙 집중화

레이아웃 일관성을 유지하기 위해 간격 상수에 대한 단일 진실 소스를 정의합니다.

enum Spacing {
    static let xs: CGFloat = 4
    static let sm: CGFloat = 8
    static let md: CGFloat = 16
    static let lg: CGFloat = 24
}

VStack(spacing: Spacing.md) {
    Text("Title")
}

5. 포괄적인 프리뷰 제공하기

프리뷰 캔버스에서 다양한 변형을 보여주고, 다크 모드 지원도 포함합니다.

struct ButtonView_Previews: PreviewProvider {
    static var previews: some View {
        Group {
            ButtonView(title: "Normal")
            ButtonView(title: "Dark")
                .preferredColorScheme(.dark)
        }
    }
}

바로 사용할 수 있는 스타터 키트

이러한 패턴을 이미 적용한 프로젝트가 필요하다면 SwiftUI Starter Kit Pro 를 확인해 보세요 — 프로젝트당 수십 시간을 절약할 수 있습니다.

Back to Blog

관련 글

더 보기 »

[SUI] 검색 바

NavigationStack의 검색 바 NavigationStack은 `searchable` 수식어를 사용하여 검색 바를 포함할 수 있습니다. 그 서명은 다음과 같습니다: ```swift searchable(...) ```

[SUI] 라벨드 콘텐츠

LabeledContent https://developer.apple.com/documentation/swiftui/labeledcontent 은 레이블을 컨트롤에 부착하는 컨테이너입니다. 기본 사용법 swift struct C...

[SUI] 양식 (Form)

Form Form은 컨트롤을 그룹화하기 위한 컨테이너이며, 주로 특정 기능의 설정에 사용됩니다. 컨트롤을 List에 표시합니다.

[SUI] MultiDatePicker

MultiDatePicker 사용 MultiDatePicker는 SwiftUI에서 여러 날짜를 선택할 수 있게 합니다. Swift 초기화 메서드 MultiDatePicker.init(_:selection:in:) - titleKey: 레이블 키…