JEP's Diary

SwiftUI 투명 fullScreenCover 본문

Development/iOS

SwiftUI 투명 fullScreenCover

지으니88 2022. 8. 4. 20:34

FullScreenCover를 이용해서 Custom Alert를 만들기 위해 배경을 투명 처리되도록 해야했다.

 

먼저 View를 extension 한다 

// 투명 fullScreenCover
extension View {
    func transparentFullScreenCover<Content: View>(isPresented: Binding<Bool>, content: @escaping () -> Content) -> some View {
        fullScreenCover(isPresented: isPresented) {
            ZStack {
                content()
            }
            .background(TransparentBackground())
        }
    }
}

struct TransparentBackground: UIViewRepresentable {
    func makeUIView(context: Context) -> UIView {
        let view = UIView()
        DispatchQueue.main.async {
            view.superview?.superview?.backgroundColor = .clear
        }
        return view
    }

    func updateUIView(_ uiView: UIView, context: Context) {}
}

그리고  뷰 작성 코드에서 아래와 같이 사용한다.

VStack {
...
}
.transparentFullScreenCover(isPresented: $isShowingScanner) {
            CommonAlert(
                showAlert: .constant(true),
                titleStringKey: "COMMON_OK",
                messageStringKey: "COMMON_OK",
                rightButtonStringKey: "COMMON_OK",
                leftButtonStringKey: "COMMON_CANCEL"
            )
        }

 

참고. 

https://stackoverflow.com/questions/64301041/swiftui-translucent-background-for-fullscreencover

'Development > iOS' 카테고리의 다른 글

Combine  (0) 2022.10.27
SwiftUI Custom Alert  (0) 2022.08.04
Xcode CocoaPods 설치 및 사용법(Swift)  (0) 2016.05.23
Xcode AppStore에 앱 배포하기  (0) 2016.03.31
Xcode SideMenu 구성하기(MFSideMenu)  (0) 2016.03.30