앱 메인화면에 진입하기 전 뜨는 앱 화면을 런처스크린이라고 부르는데요 ! 저는 런처스크린 스토리보드를 사용하지 않고 따로 런처스크린 용도 ViewController를 만들어서 사용하였습니다 ! 이게 잘 쓰이는 건지는 모르겠지만 새로운 시도라고 생각하보고 만들어봤어요 !!
일단 먼저 사용할 이미지 뷰를 선언하고 위치와 크기를 잡아 줄께요 !
1 2 3 4 5 6 7 8 9 10 11 private func setImageView () { private let launchImageView = UIImageView () let imageViewSize: CGFloat = 100 launchImageView.image = Data .logo view.addSubview(launchImageView) launchImageView.snp.makeConstraints { (imageView) in imageView.width.height.equalTo(imageViewSize) imageView.center.equalTo(view) } }
그리고 그냥 이미지만 두면 심심하기 때문에 에니메이션을 줘보겠습니다 ! 애니메이션은 animateKeyframes를 사용해서 잡아봤습니다 ! 그리고 해당 애니메이션이 끝나면 completion으로 확인을 해 메인 뷰로 present를 해줬어요 !
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 private func setlogoAnimation () { UIView .animateKeyframes( withDuration: 3 , delay: 0 , animations: { UIView .addKeyframe( withRelativeStartTime: 0 , relativeDuration: 1.5 /3 ) { self .launchImageView.transform = CGAffineTransform (scaleX: 3.0 , y: 3.0 ) } UIView .addKeyframe( withRelativeStartTime: 1.5 /3 , relativeDuration: 1.5 /3 ) { self .launchImageView.transform = CGAffineTransform (scaleX: 1.0 , y: 1.0 ) } }, completion: {(isFinished) in guard isFinished else {return } DispatchQueue .main.async { let naviMainVC = UINavigationController (rootViewController: MainViewController ()) naviMainVC.view.backgroundColor = .systemBackground naviMainVC.modalPresentationStyle = .fullScreen self .present(naviMainVC, animated: true ) } }) }
마지막으로 작성하였던 함수들을 viewDidLoad에다가 실행을 시켜줍니다 !
1 2 3 4 5 override func viewDidLoad () { super .viewDidLoad() setImageView() setlogoAnimation() }