iOS 스파크 화면 설치 시 주의 사항 및 설치 방법

10814 단어 SwiftiOS

튀다


나는 응용 개발에 참여하기 전에도 그것을 스파크라고 부르는 것을 몰랐다.
스파크 화면은 로컬 앱을 열 때 가장 먼저 나타나는 상징적인 화면을 말한다.

참고: 개인 응용 프로그램 "바벨리"



나는 튀는 것에 관한 모든 문서를 찾을 수 없어서 설치할 때 많은 부분을 보았기 때문에 내가 좋아하는 부분을 정리하고 싶다.

화면을 튀기는 역할


스파크는 응용 프로그램의 공백에 매우 중요하다


iOS 앱을 제작할 때 스파크 화면을 피할 수 없다.
스파크는 앱을 켤 때마다 사용자가 볼 수 있는 앱의 얼굴이기 때문이다.
공백에 기여하다.

다사


튀는 것도 정적 이미지일 뿐이다. 예를 들어 트위터처럼 애니메이션을 하면 아이패드에 다른 것이 나타나 UI에 공을 들이면 의외로 시간이 걸린다.
또 많은 앱이 처음 시작할 때 튜토리얼이 나오고, 두 번째 이후에는 맨 위로 이동하는 등 시작할 때 조건이 엇갈린다.
그런 다음 스파크 화면의 ViewController에 조건 브랜치를 준비하여 SplashViewController로 사용하는 경우가 많습니다.

구성 파일 및 설치 방법


스파크 화면 설치에는 다음 세 명의 등장인물이 있다.스파크 삼총이라고 불린다.거짓말
상술한 목적에 따라 사용하지 않는 것도 있다.

①Images.xcasssets의 LaunchImage에서 설정하는 방법



이미지 파일의 Images를 해상도별로 설정할 수 있습니다.xcasssets에서는 LaunchImage에서 스파크 이미지를 설정하는 방법이 있습니다.
Illustolator에 능한 경우 화면 해상도에 따라 파일을 만들어 여기에 끼워 넣는 방법도 있다.번거롭겠지만LaunchScreen.xibLaunchScreen.storyboard를 사용하지 않을 때만 여기에 설정된 이미지 파일이 스파크로 반영됩니다.
다음은 xcode 프로젝트의 General의 App Icon and Launch Images의 LaunchScreen의 하늘이다.

2019/08/30 추기: iOS13에서 LaunchImage로 설정하는 방법은 아이패드의 분할 기능이 포함된 전체 화면에 대응할 수 없기 때문에 사용하지 않는 것이 좋다(또는 사용할 수 없을 수도 있다)
참조 링크
http://makotton.com/2014/09/29/515
https://techracho.bpsinc.jp/yoshi-k/2019_08_28/79514

줌 확대 모드 주의


참고로 상기 LaunchImage와 같이 Retina HD5.5Retina HD4.7에 해당하는 해상도를 설정한 이미지는 문제가 없지만 다음과 같은 Retina 이미지가 설정되지 않으면 문제가 없습니다.

응용 프로그램이 모두 확대 모드로 바뀌었습니다.아이폰6(7)과 아이폰6(7) 플러스에서도 아이폰5S와 같은 해상도로 나온다.
해상도에 따라 소재 제작이 까다로울 때 일부러 사용하기도 하지만 모호하기 때문에 사용하지 않는 것이 좋다.
그나저나 제 개인 앱의 바벨리도,ver1.6.3 현재 이런 방식으로 확대 모드를 진행한다.
참조 링크
http://qiita.com/uebo/items/854c284ed11aca741d93

②LaunchScreen.xib 또는 LaunchScreenstoryboard 설정


xcode6 이전LaunchScreen.xib은 xcode7 이후LaunchScreen.storyboard에 프로젝트를 제작할 때 기본적으로 준비됩니다.


참조 링크(xcode6)
http://dev.classmethod.jp/references/ios8-launch-screen-xib/
나는 많은 사람들이 앞으로 응용 프로그램을 제작할 때 생성될 것이라고 생각한다LaunchScreen.storyboard.

위에서 말한 바와 같이 프로젝트의generalLaunch Screen FileLaunchScreen.storyboard를 입력하면 이storyboard는 시작할 때 표시됩니다.

LaunchScreen.storyboard의 ViewController는 사용자 정의할 수 없습니다.


이럴 때 조심해.
이 Storyboard의 ViewController에 자신이 만든 SplashViewController를 지정하면 오류가 발생합니다.
이렇게 설정하면...

법을 어기네!야단을 맞다.

도대체 여기는 뷰만 설정할 수 있는 거야.LaunchScreen.xibLaunchScreen.storyboard든 할 수 있는 일은 똑같다는 얘기다.

③SplashViewController


마지막 등장인물은 SplashViewController입니다.
이 물건은 따로 만들 필요가 없다.근데 하는 사람이 많아요!그런 거지?
응용 프로그램을 연 후 가장 먼저 여는 ViewController는 Project의 일반 Deployment Info의 Main Interface에 설정됩니다.
다음은 자신이 준비한 것Splash.storyboard을 지정합니다.

SplashViewController 역할로 사용
  • 시작 화면에서 애니메이션
  • 부팅 후 변환 화면 제어
  • 내 생각에 대부분은 이 두 개다.

    시작 화면에서 애니메이션


    나의 개인 응용 프로그램의 바버리는 다음과 같은 내용을 참고했다.
    이 경우 SplashViewController를 시작 후 가장 먼저 여는 ViewController로 사용해야 합니다.
    애니메이션을 위해 코드를 써야 하기 때문이다.

    부팅 후 전환 화면 제어하기


    예를 들어 내가 지금 일하고 있는 JX통신사의 뉴스디지털(집필 당시)에는 SplashViewController가 정의되어 전환 화면을 다음과 같이 제어한다.

    라이프 사이클

    override func viewDidAppear(_ animated: Bool) {
            super.viewDidAppear(animated)
            self.chooseShouldLaunchViewController()
        }
    
    View 표시 후 마이그레이션 대상을 제어하는 방법이 호출됩니다.

    목적지 마이그레이션 제어 방법

    /**
         起動すべきViewControllerを起動する。
         */
        fileprivate func chooseShouldLaunchViewController() {
            if UserDefaults.standard.shouldDisplayTutorial() {
                // 初回起動
                launchTutorial()
            } else {
                // 2回目以降
                launchHome()
            }
        }
    
    UserDefault에 플래그를 저장하여 변환 방법을 제어합니다.
    이외에도 로그인 기능이 있는 프로그램이라면 대부분 로그인 여부를 판단하고 로그인 화면을 뛰어넘을지 정상으로 날아갈지 제어한다.

    SplashViewController가 화면 마이그레이션 제어에만 필요하지 않다면?


    @mono0926선생님이 저에게 메시지를 남겼어요!
    로그인하지 않은 것을 제어하려면 SplashViewController를 만들 필요가 없습니다.AppDelegateapplication(_:didFinishLaunchingWithOptions:) 에서
    var storyboardName: String
    
    if UserDefaults.standard.shouldDisplayTutorial() {
        // 初回起動
        storyboardName = "Tutorial"
    } else {
        // 2回目以降
        storyboardName = "Main"
    }
    let storybord: UIStoryboard = UIStoryboard(name: storyboardName, bundle: nil)
    window = UIWindow(frame: UIScreen.main.bounds)
    window!.rootViewController = storybord.instantiateInitialViewController()
    window!.makeKeyAndVisible()
    
    이런 느낌으로 쓰면 화면을 제어하기 위해 SplashViewController를 만들 필요가 없다.

    주의점(보충)


    Development Info(Info.plist)의 Main Interface에도 최초 storyboard를 지정하고, AppDelegate로 최초 storyboard를 지정하면 ViewController 2개를 제작하므로 주의가 필요하다.
    UIMainStoryboardFile (String - iOS) Contains a string with the name of the app’s main storyboard file (minus the .storyboard extension). A storyboard file is an Interface Builder archive containing the app’s view controllers, the connections between those view controllers and their immediate views, and the segues between view controllers. When this key is present, the main storyboard file is loaded automatically at launch time and its initial view controller installed in the app’s window. https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple_ref/doc/uid/TP40009252-SW10

    총결산


    Splash에 대한 요약입니다.
    어떤 뷰가 가장 먼저 나타날지 의외로 흥미롭다.튀는 화면에 시간을 들이면 안 되기 때문에 이 기사에 도움이 된다면 기쁠 거예요!

    좋은 웹페이지 즐겨찾기