# __[iOS] 화면 백그라운드 이동시 블러 처리하기 (sceneWillResignActive Screen Blur)__ 안녕하세요 __물먹고하자__ 입니다 :) 저희쪽에서 운영하고 있는 그룹웨어가 __공공기관용 배포준비__를 하면서 이슈 전달받았던 정보중 __백그라운드로 진입시 개인정보가 보이면 안된다(?)__ 은행권앱에서 보이는 __백그라운드 진입시 (자체로고, 블러)__ 이부분을 말하더라구요. 이부분 처리 과정 공유드립니다. --- ## 1. 백그라운드 진입시 SceneDelegate 확인하기 > 💡저는 SceneDelegate를 사용하고 있어서 Scene에서 진행할 예정인데, SceneDelegate를 사용하지 않으면 AppDelegate에서 진행하셔도 될 것 같습니다. 샘플 예시로 백그라운드(sceneWillResignActive) 상태시 __아무처리 없을 시 위와 같이 마지막 보던 화면__이 남아있게 됩니다. --- ## 2. SceneDelegate 코드 적용 > 💡참고 SceneDelegate 함수 활용하여 활성/비활성 시 Blur on/off 처리합니다. - 화면 활성종료시 : sceneWillResignActive(_ scene: UIScene) - 화면 활성시작시 : sceneDidBecomeActive(_ scene: UIScene) ``` swift class SceneDelegate: UIResponder, UIWindowSceneDelegate { var window: UIWindow? // 블러처리 변수 var blurView: UIVisualEffectView? ... (중략) ... // 화면 활성시작 func sceneDidBecomeActive(_ scene: UIScene) { // 블러처리 제거 if let blurView = blurView { blurView.removeFromSuperview() } } // 화면 활성 종료 func sceneWillResignActive(_ scene: UIScene) { // 블러처리 진행 guard let window = window else { return } let effect = UIBlurEffect(style: .regular) blurView = UIVisualEffectView(effect: effect) blurView?.frame = window.frame window.addSubview(blurView!) } ... (중략) ... } ``` --- ## 3. 적용 후 확인작업 중 의도치 않은점(?) > 💡 iPhone/iPad 둘다 지원하기 때문에 iPad에서 모달이 떠있는경우 전부 테스트시 정상 문제는 오히려 시스템 얼넛이 발생하였을떄도 sceneDidBecomeActive(_ scene: UIScene)이 발생 - __이슈 해결은 못한상태이며, 일단 가려져야하는게 주된포커스라 체크만 해둠__ --- ## 마무리 iOS 클라이언트 개발하면서 예전에는 주되게 기획서에 따른 화면 및 동작 흐름, iOS 버전에 따른 신규/유지보수 쪽 위주의 제약만 있었는데, 공공기관쪽 관련 업무를 진행하면서 하나하나 제약사항이 생기긴하네요. 최초에 전달받은 이슈건들은 크게크게 올해 초부터 진행을 했는데도 추가로 나온거 보니 왠지 아직도 더 있는 느낌 ㅠㅠ 그래도 해보고 싶은거 적용해보는것도 좋은것 같습니다. 오늘은 이만~ 즐거운 코딩 되게요. 끝.
댓글
댓글 쓰기