Snackbar

사용자의 행동에 대한 간결한 피드백을 제공하는 일시적인 알림입니다. 주로 화면 하단에 나타나 사용자의 작업 흐름을 방해하지 않으며, 실행 취소 같은 단순한 상호작용 버튼을 포함할 수 있습니다.

@MainActor struct SnackBar

Overview

사용자에게 짧은 피드백이나 알림을 제공하기 위해 사용합니다. 제목, 설명, 추가 콘텐츠와 액션 버튼을 포함할 수 있으며, 설정된 시간이 지나면 자동으로 사라집니다.

// 모델을 통한 스낵바 표시
@State private var snackBarModel: SnackBar.Model?

var body: some View {
    ContentView()
        .snackBar(
            $snackBarModel,
            handler: {
                // 액션 버튼 클릭 시 실행할 코드
            }
        )
        .onAppear {
             snackBarModel = SnackBar.Model(
                 duration: .short,
                 description: "작업이 완료되었습니다.",
                 action: "확인"
             )
        }
}

Topics

Structures

struct Model

SnackBar의 데이터 모델을 정의하는 구조체입니다.

Operators

static func == (`Self`, `Self`) -> Bool

Initializers

init(duration: Duration, heading: String?, description: String?, action: String)

SnackBar 모델을 초기화합니다.

  • Parameters
    ParameterDescription
    duration스낵바가 표시되는 시간, 생략하면 기본값으로 .short 적용
    heading스낵바의 제목, 생략하면 기본값으로 nil 적용
    description스낵바의 설명 텍스트, 생략하면 기본값으로 nil 적용
    action스낵바의 액션 버튼에 표시할 텍스트
init<V>(duration: Duration, heading: String?, description: String?, extraContents: () -> V, action: String)

SnackBar 모델을 초기화합니다.

  • Parameters
    ParameterDescription
    duration스낵바가 표시되는 시간, 생략하면 기본값으로 .short 적용
    heading스낵바의 제목, 생략하면 기본값으로 nil 적용
    description스낵바의 설명 텍스트, 생략하면 기본값으로 nil 적용
    action스낵바의 액션 버튼에 표시할 텍스트

Instance Properties

var body: some View

뷰의 내용과 동작을 정의합니다.

Instance Methods

func closeButton(Bool) -> SnackBar

닫기 버튼 노출 여부를 설정합니다.

  • Parameters

    ParameterDescription
    isEnabled닫기 버튼 노출 여부, 생략하면 기본값으로 true 적용
  • Return Value

    수정된 SnackBar 인스턴스

Enumerations

enum Duration

SnackBar가 자동으로 사라지는 시간을 정의하는 열거형입니다.

Enumeration Cases

case long

긴 표시 시간 (16초)

case short

짧은 표시 시간 (4초)

Initializers

init?(rawValue: Double)
enum Location

스낵바가 표시될 위치를 정의하는 열거형입니다.

Enumeration Cases

case bottom(offset: CGFloat)

화면 하단에 스낵바 표시

  • Parameters
    ParameterDescription
    offset하단에서의 오프셋 값, 생략하면 기본값으로 .zero 적용
case top(offset: CGFloat)

화면 상단에 스낵바 표시

  • Parameters
    ParameterDescription
    offset상단에서의 오프셋 값, 생략하면 기본값으로 .zero 적용

Associated Extensions

extension View
func snackBar(Binding<SnackBar.Model?>, location: SnackBar.Location, closeButtonEnabled: Bool, handler: () -> Void) -> some View

현재 뷰에 SnackBar를 표시하는 modifier를 적용합니다.

  • Parameters

    ParameterDescription
    modelSnackBar 모델을 바인딩합니다. nil이 아닌 값이 설정되면 SnackBar가 표시됩니다.
    locationSnackBar가 표시될 위치, 생략하면 기본값으로 .bottom(offset: .zero) 적용
    closeButtonEnabled닫기 버튼 노출 여부
    handlerSnackBar의 액션 버튼이 클릭되었을 때 실행될 클로저
  • Return Value

    SnackBar가 적용된 뷰

  • Discussion

    @State private var snackBarModel: SnackBar.Model?
    
    var body: some View {
        VStack {
            Button("Show SnackBar") {
                snackBarModel = SnackBar.Model(
                    description: "작업이 완료되었습니다",
                    action: "확인"
                )
            }
        }
        .snackBar($snackBarModel, closeButtonEnabled: true) {
            // 액션 버튼 클릭 시 실행될 코드
        }
    }
    

Relationships

Conforms To

Swift.Sendable

SwiftUICore.View

© 2026 Wanted Lab, Inc.