LaunchScreen
- 앱 초기화 중 잠시 표시되는 화면
- 앱이 실행되었다는 시각적 표시를 위한 화면
- SplashView라고 부르기도 함
- 보통 정적인 조합으로 구성(ex: imageView, label, color)
제한
- 커스텀 클래스 설정 불가
- 터치 이벤트 처리 불가
- outlet, action 연결 불가
- 런치 스크린 표시 시간을 설정할 수 없음
특정 scene을 런치 스크린으로 사용 설정 방법
- storyboard에서 원하는 scene을 클릭 후, 인스펙터 창의 첫번째 탭 - Interface Builder Document - Use as Launch Screen 체크
초기화 단계에서 추가로 로딩해야해서 더 길게 런치스크린을 표시하고자 하는 경우
- 화면을 하나 만든 다음(A) 런치스크린과 똑같이 구성 후, 첫번째 화면 앞에 껴넣는 방식으로 해결하면 된다.
- 절대로 AppDelegate의 didFinishLaunchingWithOptions에서 sleep함수를 사용하면 안된다.
특정 초 뒤에 자동으로 scene 이동 방법
Segueway 커스텀
- UIStoryboardSegue를 Subclass로 하는 클래스 생성
- perform() 함수를 override 한다.
class ReplaceSegue: UIStoryboardSegue{
override func perform(){
guard let window = source.view.window else {return}
window.rootViewController = destination
UIView.transition(with: window, duration: 0.3, options: [.transitionCrossDissolve], animations: nil)
}
- (A)-> rootView를 스토리보드에서 세그로 연결할 때, 커스텀 한 세그웨이로 연결한다.(Custom이 아니라, 프로젝트이름+클래스 이름으로 표시됨)
- Segue의 인스펙터창에서 Identifier(B)를 입력
- (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 체크하면 시작부터 애니메이션 재생됨.