티스토리 뷰

금융 등 개인 정보를 담는 앱들은 백그라운드에서 앱 화면을 가리는 기능을 사용한다.

iOS 13 미만을 지원하는 앱에서는 appDelegate에서,

이상의 버전을 지원하는 앱에서는 sceneDelegate에서 해당 메소드들을 구현해주자.

  // 액티브 상태가 되었을 경우(다시 앱으로 돌아왔을 때)
  func sceneDidBecomeActive(_ scene: UIScene) {
      callBgImage(false)
  }

  // 홈 바를 쓸어 올리거나 홈버튼을 두번 눌렀을 경우
  func sceneWillResignActive(_ scene: UIScene) {
  }

  // 백그라운드 상태였다가 돌아왔을 때
  func sceneWillEnterForeground(_ scene: UIScene) {
      callBgImage(false)
  }

  // 백그라운드 상태로 갔을 때
  func sceneDidEnterBackground(_ scene: UIScene) {
      callBgImage(true)
  }

  func callBgImage(_ isBackground: Bool) {

          let TAG_BG_IMG = -101
          let backgroundView = window?.viewWithTag(TAG_BG_IMG)

          if isBackground {

              if backgroundView == nil {

                  //여기서 보여주고 싶은 뷰 자유롭게 생성
                  let bgView = UIView()
                  bgView.frame = UIScreen.main.bounds
                  bgView.tag = TAG_BG_IMG
                  bgView.backgroundColor = .secondarySystemBackground

                  let appIcon = UIImageView()
                  appIcon.frame = CGRect(x: bgView.layer.bounds.width / 2 - 64, y: bgView.layer.bounds.height / 2 - 64, width: 128, height: 128)
                  appIcon.image = UIImage(named: "bgView")
                  bgView.addSubview(appIcon)

                  window?.addSubview(bgView)
              }
          } else {

              if let backgroundView = backgroundView {
                  backgroundView.removeFromSuperview()
              }
          }
      }
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함