sue
  • app switcher 화면에서 블러 및 이미지 보여주기
    2023년 03월 20일 00시 01분 08초에 업로드 된 글입니다.
    작성자: sue24

    앱을 처음 만들어보는데다 앵귤러로 만드는 거라서

    ios와 안드로이드를 만드는 언어를 몰라서 답답할 때가 꽤 있다

    앵귤러 언어 하나로 웹과 앱을 만들 수 있긴 하지만

    앱 언어를 알아야만 하는 때가 있다

     

    오늘 만든 기능은 화면 보안? 기능이다

    (이런 이름인 줄은 모르겠는데 일단 여기선 화면 보안 기능이라고 말해야지)

    난 아이폰을 써 본 적이 없어서 이런 기능이 있는지도 몰랐다

    아이폰은 지금 열린 앱을 다 보여주는 창에서

    (이게 app swicher화면이라는 것도 몰라서 계속 검색하다 알아냄)

    화면 보안이 설정된 앱은 앱의 화면 내용이 안 보이는 기능이다

    앱의 설정따라 다른데 아예 화면이 안 보이고 보안 문구가 보이기도 하고

    블러가 되기도 하고 다양했다

     

    나는 전체 화면을 블러한 뒤 중앙에 로고 이미지를 띄우기로 했다

     

    이 기능이 애초에 ios에만 있는 기능이라고 해서 xcode에서 작업을 해야 했다

    (진짜 맞겠지..? chatgpt3의 도움을 좀 받았는데 얘가 천연덕스럽게 거짓말하기도 한다고 해서 불안불안)

     

    // AppDelegate.swift
    
    @UIApplicationMain
    class AppDelegate: UIResponder, UIApplicationDelegate {
        
        let blurView = UIVisualEffectView(effect: UIBlurEffect(style: .regular))
    
        func applicationWillResignActive(_ application: UIApplication) {
            blurView.frame = rootViewController.view.bounds
            rootViewController.view.addSubview(blurView)
            let image = UIImage(named: "logo")
            let imageView = UIImageView(image: image)
            imageView.frame = CGRect(x: 0, y: 0, width: 200, height: 200)
            imageView.center = rootViewController.view.center
            imageView.alpha = 1.0
            blurView.contentView.addSubview(imageView)
            blurView.contentView.bringSubviewToFront(imageView)
        }
    
        func applicationDidBecomeActive(_ application: UIApplication) {
            blurView.removeFromSuperview()
        }
    
    }
    1. applicationWillResignActive
      • app switcher 화면으로 들어갈 때 반응하는 함수
      • blurView 
        • blurView 변수는 바깥에서 선언(2번 함수에서 제거를 해줘야해서)
        • blurView를 root에 바운드시킨 뒤, root의 서브뷰로 등록해준다
      • imageView
        • blurView의 서브뷰라서 굳이 바깥에서 선언하지 않았다
        • UIImage의 named는 Assets.scassets에 등록된 것만 사용할 수 있다(pulic/assets에 있다고 되는 거 아님..ㅜ)
        • 위치와 크기를 잡은 뒤
        • blurView의 서브뷰로 등록해준다(바로 등록하는 게 아니라 contentView에 등록해야 한다!)
        • alpha나 bringSubviewToFront는 이미지 등록을 안 하고 이미지가 안 나온다고 이것저것 수를 찾다가 추가된 코드로.. 혹시 안 보이면 이런 방법도 있다는 것을...
      • 이미지가 아니라 글을 보이고 싶을 때!
        • let phraseLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 100))
          phraseLabel.center = rootViewController.view.center
          phraseLabel.textAlignment = .center
          phraseLabel.text = "SEAM SPACE"
          blurView.contentView.addSubview(phraseLabel)
    2. applicationDidBecomeActive
      • 다시 화면이 풀 스크린으로 나올 때!
      • imageView는 blurView의 서브뷰라서 그냥 blurView만 제거하면 된다
    댓글