SwiftUICore
extension ShapeStyle
func shadow(Shadow.Level) -> some ShapeStyle
디자인 시스템 그림자(앰비언트 + 키)를 analytic drop 그림자로 적용한 ShapeStyle을 반환합니다.
-
Parameters
-
Return Value
그림자가 적용된
ShapeStyle -
Discussion
Shape의fill에 사용하면 그림자가 Shape 지오메트리로부터 직접 그려져 오프스크린 렌더링 패스가 발생하지 않습니다. 그림자를 그릴 표면의 모양을 알 수 있는 경우(카드·버튼·둥근 컨테이너 등)에는 임의 콘텐츠에 적용하는View.shadow(_:)대신 이쪽을 사용해 GPU 합성 비용을 줄이세요.
extension View
func actionArea(scrollReachedEnd: Bool?, () -> ActionArea) -> some View
현재 뷰에 하단 ActionArea를 적용합니다.
-
Parameters
-
Return Value
ActionArea가 적용된 뷰
-
Discussion
구성은 ActionArea의 모디파이어 체인으로 하고, 완성된 인스턴스를 이 슬롯에 넘깁니다.
Note
슬롯 클로저에
@ViewBuilder를 붙이지 않았습니다. 붙이면if문이_ConditionalContent를 만들어 ActionArea 타입 제약이 깨집니다. 공개 모디파이어가 모두Self를 돌려주므로 체인과 삼항 연산자는 그대로 쓸 수 있습니다.
func adjustLineHeight(variant: Typography.Variant) -> some View
타이포그래피 변형에 따른 줄 높이를 적용합니다.
-
Parameters
-
Return Value
줄 높이가 적용된 View
func asUIImage() -> UIImage
View를 UIImage로 변환합니다.
-
Return Value
변환된 UIImage
func bottomSheet<V>(isPresented: Binding<Bool>, isFullScreenCover: Bool, needHandle: Bool, resize: BottomSheet.Resize, contentVerticalPadding: ModalContentPadding.Vertical, contentHorizontalPadding: ModalContentPadding.Horizontal, navigation: (() -> ModalNavigation)?, actionArea: (() -> ActionArea)?, onDismiss: (() -> Void)?, () -> V) -> some View
바텀 시트 모달을 표시합니다.
-
Parameters
-
Return Value
바텀 시트 모달이 적용된 뷰
-
Discussion
화면 하단에서 올라오는 바텀 시트 형태의 모달을 표시합니다.
func bottomSheet<V>(isPresented: Binding<Bool>, isFullScreenCover: Bool, needHandle: Bool, resize: BottomSheet.Resize, ignoresEdgeInsets: Bool, navigation: (() -> ModalNavigation)?, actionArea: (() -> ActionArea)?, onDismiss: (() -> Void)?, () -> V) -> some View
func bottomSheet<V>(isPresented: Binding<Bool>, isFullScreenCover: Bool, needHandle: Bool, resize: BottomSheet.Resize, ignoresEdgeInsets: Bool, navigation: (() -> ModalNavigation)?, actionArea: (() -> ActionArea)?, onDismiss: (() -> Void)?, () -> V) -> some View바텀 시트 모달을 표시합니다.
Deprecated
contentHorizontalPadding을 쓰세요. ignoresEdgeInsets: true는 contentHorizontalPadding: .none과 같습니다.
-
Parameters
-
Return Value
바텀 시트 모달이 적용된 뷰
func carveLog(String, font: Font?, alignment: Alignment, drawOnPreviewOnly: Bool) -> some View
프리뷰에서 뷰 위에 로그를 출력합니다.
-
Parameters
-
Return Value
로그가 출력된 View
func dimensioning(axis: Axis?, drawOnPreviewOnly: Bool) -> some View
프리뷰에서 뷰의 주어진 축의 크기를 측정하여 뷰 위에 출력합니다.
-
Parameters
-
Return Value
뷰 크기가 그려진 View
func disableSwipeBack(Bool) -> some View
뷰에서 스와이프 백 제스처를 비활성화하는 modifier를 적용합니다.
-
Parameters
-
Return Value
스와이프 백 제스처가 제어된 뷰
-
Discussion
네비게이션 컨트롤러의 스와이프 뒤로가기 제스처 인식기를 제어합니다.
func framedStyle(status: FramedStyle.Status, borderRadius: CGFloat, shadowLevel: Shadow.Level) -> some View
현재 뷰에 프레임 스타일을 적용합니다.
-
Parameters
-
Return Value
프레임 스타일이 적용된 뷰
-
Discussion
테두리, 배경, 그림자가 있는 프레임을 뷰에 적용하여 일관된 디자인을 제공합니다. 다양한 크기와 상태를 설정할 수 있어 다양한 UI 요소에 활용할 수 있습니다.
Note
그림자에는 원본 View 배경색의 opacity가 동일하게 적용되므로, 원본 View의 opacity가 0.0인 경우 그림자가 표시되지 않습니다.
Note
비활성화는 SwiftUI 표준
disabled(_:)를 사용합니다. 상위 컨테이너에 한 번 걸면 하위 컴포넌트까지 함께 비활성 스타일로 표시됩니다.
func `if`(Bool) -> some View
조건이 true일 때만 View를 표시합니다.
-
Parameters
-
Return Value
조건에 따라 표시되는 View
func `if`(Bool, (Self) -> any View, else: ((Self) -> any View)?) -> some View
조건에 따라 View를 변환합니다.
-
Parameters
-
Return Value
변환된 View
func ifEmptyView((Bool) -> Void) -> some View
View의 크기가 .zero로 변경되거나 .zero가 아닌 값으로 변경될 때 액션을 수행합니다.
-
Parameters
-
Return Value
수정된 View
-
Discussion
Note
opacity(0), hidden() 등 시각적으로 비어 보이지만 사이즈를 가지는 케이스는 감지되지 않습니다.
func loading(Binding<Bool>, type: Loading.Kind, dimmedColor: SwiftUI.Color) -> some View
현재 뷰에 로딩 인디케이터와 함께 로딩 오버레이를 적용합니다.
-
Parameters
-
Return Value
로딩 기능이 적용된 뷰
-
Discussion
로딩 상태일 때 뷰 위에 반투명 배경과 로딩 애니메이션을 표시합니다. 로딩 중에는 사용자 상호작용이 비활성화됩니다.
func modifying((Self) -> any View) -> some View
View를 변환합니다.
-
Parameters
-
Return Value
변환된 View
func modifying((Self) -> Self) -> Self
View를 변환합니다.
-
Parameters
-
Return Value
변환된 View
func onGeometryChange<T>(for: T.Type, of: (GeometryProxy) -> T, for: ContinuousClock.Instant.Duration, action: (_ newValue: T) -> Void) -> some View
View의 지오메트리 변경정보를 디바운스시켜서 받습니다.
-
Parameters
-
Return Value
디바운스된 View
func popoverCustom<V>(isPresented: Binding<Bool>, content: () -> V) -> some View
사용자 정의 팝오버 모디파이어를 초기화합니다.
-
Parameters
-
Return Value
사용자 정의 팝오버 모디파이어
func popoverNormal(isPresented: Binding<Bool>, heading: String, text: String, closeButton: Bool, action: (title: String, action: () -> Void)?, subAction: (title: String, action: () -> Void)?) -> some View
일반적인 팝오버 모디파이어를 초기화합니다.
-
Parameters
-
Return Value
일반적인 팝오버 모디파이어
func popup<V>(isPresented: Binding<Bool>, resize: Popup.Resize, contentVerticalPadding: ModalContentPadding.Vertical, contentHorizontalPadding: ModalContentPadding.Horizontal, navigation: (() -> ModalNavigation)?, actionArea: (() -> ActionArea)?, () -> V) -> some View
팝업 모달을 표시합니다.
-
Parameters
-
Return Value
팝업 모달이 적용된 뷰
-
Discussion
화면 중앙에 표시되는 팝업 형태의 모달을 표시합니다.
func popup<V>(isPresented: Binding<Bool>, resize: Popup.Resize, ignoresEdgeInsets: Bool, navigation: (() -> ModalNavigation)?, actionArea: (() -> ActionArea)?, () -> V) -> some View
func popup<V>(isPresented: Binding<Bool>, resize: Popup.Resize, ignoresEdgeInsets: Bool, navigation: (() -> ModalNavigation)?, actionArea: (() -> ActionArea)?, () -> V) -> some View팝업 모달을 표시합니다.
Deprecated
contentHorizontalPadding을 쓰세요. ignoresEdgeInsets: true는 contentHorizontalPadding: .none과 같습니다.
-
Parameters
-
Return Value
팝업 모달이 적용된 뷰
func printSize(String) -> some View
프리뷰에서 크기가 변경될 때마다 콘솔에 출력합니다.
-
Parameters
-
Return Value
크기가 출력된 View
func printValue<V>(V, String) -> some View
프리뷰에서 값이 변경될 때마다 콘솔에 출력합니다.
-
Parameters
-
Return Value
값이 출력된 View
func pullToRefresh(scrollYOffset: Binding<CGFloat>, refresh: () async -> Void) -> some View
스크롤 뷰에 풀-투-리프레시(Pull-to-Refresh) 기능을 추가합니다.
-
Parameters
-
Return Value
풀-투-리프레시 기능이, 추가된 뷰
-
Discussion
사용자가 스크롤 뷰를 아래로 당기면 애니메이션과 함께 리프레시 기능을 제공합니다. iOS 18 이상에서 사용 가능하며, 로딩 애니메이션과 함께 당김 정도에 따른 시각적 피드백을 제공합니다.
Note
iOS 18 이상에서 사용 가능합니다.
ScrollView는 onRefresh(_:)가 이 수정자를 대신 붙여 주므로, 직접 붙이는 건
SwiftUI.ScrollView처럼 오프셋을 따로 재야 하는 경우입니다.
func pushBadge(variant: PushBadge.Variant, size: PushBadge.Size, fontColor: SwiftUI.Color, backgroundColor: SwiftUI.Color, outlineBorder: Bool, outlineBorderColor: SwiftUI.Color, position: PushBadge.Position, inset: CGSize) -> some View
현재 뷰에 푸시 알림 뱃지를 표시합니다.
-
Parameters
-
Return Value
뱃지가 적용된 뷰
-
Discussion
뷰의 특정 위치에 알림 또는 메시지 표시용 뱃지를 추가합니다.
func recognizeView(SwiftUI.Color, fill: Bool, drawOnPreviewOnly: Bool) -> some View
화면에 View의 frame을 표시합니다.
-
Parameters
-
Return Value
인식된 View
func reportsScrollOffset(Bool) -> some View
세로 스크롤 오프셋을 스스로 재서 상위 ScreenScaffold에 전달합니다.
-
Parameters
-
Return Value
스크롤 오프셋을 올리는 뷰
-
Discussion
ScreenScaffold의 TopNavigation은 이 값으로 배경 농도를 정합니다. 스크롤을 스캐폴드가 쥐는
.builtIn에서는 자동으로 전달되므로, 소비자가 스크롤을 직접 쥐는.custom에서만 붙입니다.Important
스크롤 기하를 읽는
onScrollGeometryChange가 iOS 18부터라 이 수정자도 iOS 18 이상에서만 쓸 수 있습니다. 그 아래 버전에서는 TopNavigation이 배경 농도를 바꿀 근거를 얻지 못해 불투명 배경으로 고정됩니다.
func reportsScrollReachedEnd(Bool) -> some View
스크롤이 바닥에 닿았는지를 스스로 재서 하위 ActionArea에 전달합니다.
-
Parameters
-
Return Value
하단 도달 신호를 올리는 뷰
-
Discussion
ScrollView는 이 신호를 자동으로 올리므로 이 수정자가 필요 없습니다. 신호를 올려주지 않는
SwiftUI.ScrollView·List에만 붙입니다.Important
배포 타깃이 iOS 18 미만이면
SwiftUI/View/scrollContentBottomMarker(isLast:)를 마지막 요소에 함께 붙여야 합니다. 스크롤 기하를 한 번에 읽는onScrollGeometryChange가 iOS 18부터라, 그 아래에서는 마지막 요소의 위치로 바닥을 가늠하기 때문입니다. 마커가 없으면 콘텐츠가 남아 있다고 보아 ActionArea가 그라데이션을 계속 그립니다.
func scrollContentBottomMarker(isLast: Bool) -> some View
func scrollContentBottomMarker(isLast: Bool) -> some View스크롤 콘텐츠의 마지막 요소에 붙여 콘텐츠 바닥 위치를 컨테이너로 올립니다.
-
Parameters
-
Return Value
콘텐츠 바닥 위치를 올리는 뷰
-
Discussion
SwiftUI/View/reportsScrollReachedEnd(_:)가 iOS 18 미만에서 바닥 도달을 재는 근거입니다.List는 화면 밖 행을 만들지 않아 콘텐츠 전체 높이를 알 수 없으므로, 마지막 요소가 어디까지 내려왔는지를 직접 알려 줘야 합니다.Important
배포 타깃이 iOS 18 미만일 때만 쓸 수 있습니다. iOS 18부터는
SwiftUI/View/reportsScrollReachedEnd(_:)가 스크롤 기하를 직접 읽어 마커가 필요 없고, 붙여 둬도 행마다GeometryReader를 다는 비용만 남습니다. 타깃을 18로 올리면 컴파일러가 이 호출을 잡아 주므로 그때 지우세요.
func shadow(Shadow.Level) -> some View
현재 뷰에 그림자를 적용합니다.
-
Parameters
-
Return Value
그림자가 적용된 뷰
-
Discussion
지정된 레벨의 그림자를 뷰에 적용하여 깊이감을 줍니다. 키 그림자와 앰비언트 그림자가 조합되어 자연스러운 그림자 효과를 만듭니다.
Important
이 API는 임의의 콘텐츠에 그림자를 적용하므로, 시스템이 콘텐츠의 실루엣을 알기 위해 오프스크린 렌더링 패스를 발생시킵니다(특히
clipShape/머티리얼과 함께 쓰일 때). 그림자를 그릴 표면의 모양을 알 수 있다면Shape의fill에 적용하는ShapeStyle.shadow(_:)를 사용해 오프스크린을 피하세요.
func skeleton(isPresented: Bool, kind: Skeleton.Kind, color: SwiftUI.Color?, opacity: CGFloat?, size: CGSize?) -> some View
현재 뷰에 미리 정의된 스켈레톤 로딩 UI를 적용합니다.
-
Parameters
-
Return Value
스켈레톤 기능이 적용된 뷰
func skeleton<V>(isPresented: Bool, skeletonView: () -> V) -> some View
현재 뷰에 커스텀 스켈레톤 로딩 UI를 적용합니다.
-
Parameters
-
Return Value
스켈레톤 기능이 적용된 뷰
func snackBar(Binding<SnackBar.Model?>, location: SnackBar.Location, closeButtonEnabled: Bool, handler: () -> Void) -> some View
현재 뷰에 SnackBar를 표시하는 modifier를 적용합니다.
-
Parameters
-
Return Value
SnackBar가 적용된 뷰
-
Discussion
func toast(Binding<Toast.Model?>, location: Toast.Location, duration: Toast.Duration) -> some View
현재 뷰에 Toast 메시지를 표시하는 modifier를 적용합니다.
-
Parameters
-
Return Value
Toast가 적용된 뷰
-
Discussion
func tooltip(isPresented: Binding<Bool>, mode: Tooltip.ActionMode, position: Tooltip.Position, size: Tooltip.Size, message: String) -> some View
현재 뷰에 툴팁을 표시하는 modifier를 적용합니다.
-
Parameters
-
Return Value
툴팁이 적용된 뷰
func userInteractionDisabled(Bool) -> some View
사용자 상호작용을 비활성화하는 modifier를 적용합니다.
-
Parameters
-
Return Value
사용자 상호작용이 비활성화된 뷰
-
Discussion
뷰의 터치 이벤트와 스와이프 백 제스처를 비활성화합니다.
extension SwiftUI.Color
var uiColor: UIColor
SwiftUI.Color를 UIColor로 변환합니다.
-
Return Value
변환된 UIColor 인스턴스
static func atomic(Color.Atomic) -> SwiftUI.Color
Atomic 색상 타입에 해당하는 SwiftUI.Color를 생성합니다.
-
Parameters
-
Return Value
동적으로 생성된 SwiftUI.Color 인스턴스
static func semantic(Color.Semantic) -> SwiftUI.Color
Semantic 색상 타입에 해당하는 SwiftUI.Color를 생성합니다.
-
Parameters
-
Return Value
동적으로 생성된 SwiftUI.Color 인스턴스
extension Font
static func font(size: CGFloat, weight: Typography.Weight) -> Font
Montage 디자인 시스템의 폰트를 생성합니다.
-
Parameters
-
Return Value
생성된 Font 인스턴스
static func font(variant: Typography.Variant, weight: Typography.Weight) -> Font?
Montage 디자인 시스템의 폰트를 생성합니다.
-
Parameters
-
Return Value
생성된 Font 인스턴스
extension Image
static func icon(Icon, renderingMode: TemplateRenderingMode, color: SwiftUI.Color?) -> Image
Montage 디자인 시스템의 아이콘을 생성합니다.
-
Parameters
-
Return Value
생성된 Image 인스턴스
-
Discussion
color가 없으면:renderingMode에 따라.template(foregroundColor로 틴트) 또는.original(원본 색)로 동작합니다.color가 있으면: 해당 색으로 틴트한 한 장의 Image를 만듭니다. 일반 아이콘은 전체가color로 칠해지고,Opaque아이콘(흰색·검은색·투명 혼합)은 검은 영역만color로 치환하고 흰색·투명 영역은 유지합니다.
extension Text
func paragraph(variant: Typography.Variant, weight: Typography.Weight, color: SwiftUI.Color) -> some View
타이포그래피 변형에 따른 단락 스타일을 적용합니다.
-
Parameters
-
Return Value
단락 스타일이 적용된 View
func paragraph(variant: Typography.Variant, weight: Typography.Weight, semantic: Color.Semantic) -> some View
타이포그래피 변형에 따른 단락 스타일을 적용합니다.
-
Parameters
-
Return Value
단락 스타일이 적용된 View
func typography(variant: Typography.Variant, weight: Typography.Weight, color: SwiftUI.Color) -> Text
타이포그래피 변형에 따른 스타일을 적용합니다.
-
Parameters
-
Return Value
스타일이 적용된 Text 인스턴스
func typography(variant: Typography.Variant, weight: Typography.Weight, semantic: Color.Semantic) -> Text
타이포그래피 변형에 따른 스타일을 적용합니다.
-
Parameters
-
Return Value
스타일이 적용된 Text 인스턴스