Skip to content

Commit

Permalink
Deprecate fullScreenOverlayPresentationSpace(name:) modifier
Browse files Browse the repository at this point in the history
  • Loading branch information
stleamist committed Sep 14, 2022
1 parent e57cff5 commit 300c094
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 7 deletions.
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,19 +38,19 @@ SwiftUI에서 [`ZStack`](https://developer.apple.com/documentation/swiftui/zstac

### 프레젠테이션 공간 설정하기

FullScreenOverlay를 사용하려면 먼저 오버레이를 띄울 프레젠테이션 공간을 설정해야 합니다. 오버레이가 띄워지길 원하는 뷰(예: 최상위 루트 뷰)에 `fullScreenOverlayPresentationSpace(name:)` 모디파이어를 사용하여 프레젠테이션 공간과 그 이름을 설정합니다.
FullScreenOverlay를 사용하려면 먼저 오버레이를 띄울 프레젠테이션 공간을 설정해야 합니다. 오버레이가 띄워지길 원하는 뷰(예: 최상위 루트 뷰)에 `fullScreenOverlayPresentationSpace(_:)` 모디파이어를 사용하여 프레젠테이션 공간과 그 이름을 설정합니다.

```swift
RootView()
.fullScreenOverlayPresentationSpace(name: "RootView")
.fullScreenOverlayPresentationSpace(.named("RootView"))
```

프레젠테이션 공간으로 사용하려는 뷰가 충분히 크지 않은 경우, [`frame(maxWidth:maxHeight:)`](https://developer.apple.com/documentation/swiftui/view/frame(minwidth:idealwidth:maxwidth:minheight:idealheight:maxheight:alignment:)) 모디파이어를 사용하여 뷰의 크기를 넓혀준 다음 모디파이어를 사용합니다.

```swift
FittingRootView()
.frame(maxWidth: .infinity, maxHeight: .infinity)
.fullScreenOverlayPresentationSpace(name: "FittingRootView")
.fullScreenOverlayPresentationSpace(.named("FittingRootView"))
```

프레젠테이션 공간은 여러 곳이 될 수 있습니다. [`NavigationView`](https://developer.apple.com/documentation/swiftui/navigationview)를 사용하는 경우, [`NavigationLink`](https://developer.apple.com/documentation/swiftui/navigationlink)`destination` 뷰에 별도의 프레젠테이션 공간을 설정하면, 해당 `destination` 뷰 내부에서만 오버레이를 띄울 수 있습니다.
Expand All @@ -61,11 +61,11 @@ NavigationView {
"Detail",
destination: {
DetailView()
.fullScreenOverlayPresentationSpace(name: "DetailView")
.fullScreenOverlayPresentationSpace(.named("DetailView"))
}
)
}
.fullScreenOverlayPresentationSpace(name: "NavigationView")
.fullScreenOverlayPresentationSpace(.named("NavigationView"))
```

`PresentationSpace.named(_:)`는 SwiftUI의 `CoordinateSpace.named(_:)`와 마찬가지로 `AnyHashable` 타입을 이름으로 받습니다. 따라서 `String`이 아니더라도 `Hashable`을 만족하는 타입이라면 어떤 것이든 이름이 될 수 있습니다.
Expand All @@ -76,7 +76,7 @@ extension RootView {
}

RootView()
.fullScreenOverlayPresentationSpace(name: RootView.PresentationSpaceName())
.fullScreenOverlayPresentationSpace(.named(RootView.PresentationSpaceName()))
```

### 오버레이 띄우기
Expand Down
1 change: 1 addition & 0 deletions Sources/FullScreenOverlay/View+FullScreenOverlay.swift
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import SwiftUI
@available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0, *)
public extension View {

@available(*, deprecated, message: "Use 'fullScreenOverlayPresentationSpace(_:)' instead.")
func fullScreenOverlayPresentationSpace<T: Hashable>(name: T) -> some View {
self
.modifier(FullScreenOverlayPresenter(presentationSpace: .named(name)))
Expand Down
2 changes: 1 addition & 1 deletion Sources/Previews/Previews.swift
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,6 @@ internal struct SwiftUIView_Previews: PreviewProvider {

static var previews: some View {
RootView()
.fullScreenOverlayPresentationSpace(name: "RootView")
.fullScreenOverlayPresentationSpace(.named("RootView"))
}
}

0 comments on commit 300c094

Please sign in to comment.