Notice
Recent Posts
Recent Comments
Link
관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - SwiftUI] padding(.horizontal, nil)과 padding(.horizontal, 0)의 차이 본문

iOS 응용 (SwiftUI)

[iOS - SwiftUI] padding(.horizontal, nil)과 padding(.horizontal, 0)의 차이

jake-kim 2025. 5. 21. 01:34

padding에 nil 할당의 의미

  • padding을 설정할때는 nil이나 Double값을 할당 할 수 있는데, 차이가 존재
  • padding에 nil을 할당하면 padding()과 같이 시스템에서 알아서 정해주는 default padding으로 세팅됨
  • padding에 0을 할당하면 의미 그대로 여백을 주지 않는다는 의미
  • 그렇다면 뷰에 padding을 안썼을때 적용되는 것은?
    • padding에 0을 할당한것과 동일
    • 주의) padding에 nil을 할당하면 padding을 안썼을때와 다르게, 시스템에서 알아서 정해주는 세팅이 되므로 주의할 것

예시

  • UI에서 토글을 누를때마다 padding 적용 여부를 보고 싶기 때문에 아래와 같은 if함수 정의
extension View {
    @ViewBuilder
    func `if`<Content: View>(
        _ condition: Bool,
        transform: (Self) -> Content
    ) -> some View {
        if condition {
            transform(self)
        } else {
            self
        }
    }
}
  • 토글할때마다 padding(.horizontal, nil)이 적용되도록하여 차이 확인
struct ContentView: View {
    @State private var useExplicitPadding = false

    var body: some View {
        VStack(spacing: 16) {
            Text("박스 안 텍스트")
                .frame(maxWidth: .infinity)
                .background(Color.blue.opacity(0.3))
                .if(useExplicitPadding) {
                    $0.padding(.horizontal, nil)
                }
                .background(Color.red.opacity(0.2))

            Toggle("Use padding(.horizontal, nil)", isOn: $useExplicitPadding)
        }
    }
}

완성)

padding(.horizontal, nil)이 적용되면 시스템에서 알아서 패딩을 적용시킴

Comments