[iOS] LaunchScreen

RudinP·2024년 2월 5일
0

Study

목록 보기
133/227

LaunchScreen

  • 앱 초기화 중 잠시 표시되는 화면
  • 앱이 실행되었다는 시각적 표시를 위한 화면
  • SplashView라고 부르기도 함
  • 보통 정적인 조합으로 구성(ex: imageView, label, color)

제한

  • 커스텀 클래스 설정 불가
  • 터치 이벤트 처리 불가
  • outlet, action 연결 불가
  • 런치 스크린 표시 시간을 설정할 수 없음
    • 초기화되는 동안 표시되기 때문

특정 scene을 런치 스크린으로 사용 설정 방법

  • storyboard에서 원하는 scene을 클릭 후, 인스펙터 창의 첫번째 탭 - Interface Builder Document - Use as Launch Screen 체크

초기화 단계에서 추가로 로딩해야해서 더 길게 런치스크린을 표시하고자 하는 경우

  • 화면을 하나 만든 다음(A) 런치스크린과 똑같이 구성 후, 첫번째 화면 앞에 껴넣는 방식으로 해결하면 된다.
  • 절대로 AppDelegate의 didFinishLaunchingWithOptions에서 sleep함수를 사용하면 안된다.

특정 초 뒤에 자동으로 scene 이동 방법

Segueway 커스텀

  1. UIStoryboardSegue를 Subclass로 하는 클래스 생성
  2. perform() 함수를 override 한다.
class ReplaceSegue: UIStoryboardSegue{
	override func perform(){
    	guard let window = soruce.view.window else {return}
    
    	window.rootViewController = destination
    
    	UIView.transition(with: window, duration: 0.3, options: [.transitionCrossDissolve], animations: nil)
}
  1. (A)-> rootView를 스토리보드에서 세그로 연결할 때, 커스텀 한 세그웨이로 연결한다.(Custom이 아니라, 프로젝트이름+클래스 이름으로 표시됨)
  2. Segue의 인스펙터창에서 Identifier(B)를 입력
  3. (A)의 뷰 컨트롤러 스크립트에서 특정 초를 입력한 DispatchQueue.main.asyncAfter클로저 작성
    • performSegue(withIdentifier: ,sender: )
class SplashViewController: UIViewController{
	override func viewDidLoad(){
    	super.viewDidLoad()
        
        DispatchQueue.main.asyncAfter(deadline: .now() + /*특정초*/){
        	self.performSegue(withIdentifier: "(B)", sender: nil)
        }
    }
}

Activity Indicator

  • 기본적으로 iOS 라이브러리에서 추가 가능
  • 인디케이터에서 Animating 체크하면 시작부터 애니메이션 재생됨.
profile
곰을 좋아합니다. <a href = "https://github.com/RudinP">github</a>

0개의 댓글