728x90
금융 등 개인 정보를 담는 앱들은 백그라운드에서 앱 화면을 가리는 기능을 사용한다.
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()
}
}
}
728x90
'Dev > iOS' 카테고리의 다른 글
[Dev, iOS] Swift Package Manager 사용하기 (Xcode 13) (0) | 2022.01.13 |
---|---|
[Dev, iOS] Storyboard 없이 첫 화면을 구성하는 법 (0) | 2022.01.13 |
[Dev, iOS] 배경을 Gradient로 색칠하기 (0) | 2021.12.06 |
[Dev, iOS] 디테일한 다크모드 적용하기 (1) | 2021.02.06 |
[Dev, iOS] segue로 넘겨 받은 데이터를 다시 전달하는 법 (0) | 2021.01.22 |