ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • iOS) `Scene-based` 와 `Scene-support` 의 차이점
    iOS/πŸ›  μ΄μŠˆμ™€ ꢁ금증 2021. 2. 2. 07:39
    κ΄€λ ¨ κΈ€: Managing Your App's Life Cycle - UIKit

     

    μœ„ 글을 μ •λ¦¬ν•˜λ©΄μ„œ 곡식 λ¬Έμ„œμ—μ„œ λΉ„μŠ·ν•˜κ²Œ 생긴 두 μš©μ–΄ λ•Œλ¬Έμ— ν˜Όλ™μ΄ 생겨 μ •λ¦¬ν•˜κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

     

    κ·Έ 두 μš©μ–΄κ°€ λ°”λ‘œ `Scene-based` μ™€ `Scene-support` μž…λ‹ˆλ‹€.

     

    μž„μ˜λ‘œ 생각해보면, `Scene-based` 앱이라면 μžλ™μœΌλ‘œ `Scene-support` λ₯Ό ν•  것 κ°™κ³ , κ·Έ λ°˜λŒ€λ‘œ 생각해봐도 그럴 λ“― ν•©λ‹ˆλ‹€.

    κ·Έλž˜μ„œ μ²˜μŒμ—λŠ” 두 μš©μ–΄κ°€ 같은 것을 μ˜λ―Έν•˜λŠ” 쀄 μ•Œμ•˜μŠ΅λ‹ˆλ‹€.


     

    κ²°λ‘ λΆ€ν„° μ΄μ•ΌκΈ°ν•˜λ©΄, 두 μš©μ–΄λŠ” κ°€λ¦¬ν‚€λŠ” 것이 λ‹€λ¦…λ‹ˆλ‹€.

     

    μš°μ„  Scene μ΄λž€ iOS 13λΆ€ν„° μ μš©λ˜λŠ” κ°œλ…μœΌλ‘œ, ν•˜λ‚˜μ˜ scene 은 ν•˜λ‚˜μ˜ window 와 viewcontroller 듀을 κ΄€λ¦¬ν•˜λ©°, μ•±μ˜ UI μΈμŠ€ν„΄μŠ€ ν•˜λ‚˜λ₯Ό κ°€λ¦¬ν‚€λŠ” μ˜€λΈŒμ νŠΈμž…λ‹ˆλ‹€.

     

    그리고 UIScene μ„ 직접 μ‚¬μš©ν•˜μ§€ μ•Šκ³  μ„œλΈŒν΄λž˜μ‹±ν•œ UIWindowScene 였브젝트둜 κ΄€λ¦¬ν•©λ‹ˆλ‹€.

     

    μ‹€ν–‰ 쀑인 μ•±μ˜ UI View 계측


     

    Scene-based

    deployment target 의 버전이 iOS13 이상 μ΄λΌλ©΄, 앱은 μžλ™μœΌλ‘œ 이미 `scene-based`μ•± μž…λ‹ˆλ‹€.

     

    λ”°λΌμ„œ UIKit은 씬 `state transition` 에 따라 SceneDelgate의 λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•©λ‹ˆλ‹€.

    AppDelegate의 applicationWillEnterForeground(_:) 와 같은 App-based Life Cycle λ©”μ„œλ“œ λŠ” ν˜ΈμΆœλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

     

    SceneDelegate λ©”μ„œλ“œμ— 좜λ ₯을 μ°μ–΄λ³΄μ•˜μŠ΅λ‹ˆλ‹€.


     

    Scene support

    보톡 μ•„μ΄ν°μ—μ„œλŠ” μ™ΈλΆ€ λ””μŠ€ν”Œλ ˆμ΄μ— μ—°κ²°ν•˜μ§€ μ•ŠλŠ”ν•œ, μ•± μ‹€ν–‰ 쀑 ν•˜λ‚˜μ˜ μ”¬λ§Œ κ΄€λ¦¬ν•˜κ²Œ λ©λ‹ˆλ‹€.

     

    ν•˜μ§€λ§Œ μ•„μ΄νŒ¨λ“œμ—μ„œλŠ” 같은 μ•± μΈμŠ€ν„΄μŠ€λ₯Ό λ‹€μˆ˜λ‘œ ν‚€λŠ” κ²½μš°κ°€ μž¦μŠ΅λ‹ˆλ‹€.

     

    μ•„λž˜μ˜ 사진과 같은 κ²½μš°μž…λ‹ˆλ‹€.

     

     Note 앱을 2개 킨 ν™”λ©΄

     

    μœ„μ™€ 같은 κ²½ν—˜μ„ μ§€μ›ν•˜λŠ” 것이 `Scene-support` μž…λ‹ˆλ‹€.

     

    Scene-support λŠ” `opt-in` κΈ°λŠ₯μœΌλ‘œμ„œ, ν•„μš”μ‹œ μ„ νƒμ μœΌλ‘œ μΆ”κ°€ν•  수 μžˆλŠ” κΈ°λŠ₯μž…λ‹ˆλ‹€.

     

    적용 방법은 Xcode λ‚΄λΆ€ ν”„λ‘œμ νŠΈ 파일의 Deployment Info μ—μ„œ Support multiple windows λ₯Ό μ²΄ν¬ν•˜μ‹œλ©΄ λ©λ‹ˆλ‹€.

     

    체크 μ‹œ 기본적인 ν‚€κ°€ Info.plist 에 μΆ”κ°€λ©λ‹ˆλ‹€.

     

    μ•„λž˜ 사진 2개λ₯Ό ν™•μΈν•΄μ£Όμ„Έμš”.

     

    .xcdoeproj νŒŒμΌμ—μ„œ Deployment Info 에 μœ„μΉ˜ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. μ²΄ν¬ν•˜λ©΄

     

    Info.plist 에 `Application Scene Manifest` ν‚€κ°€ μΆ”κ°€λ©λ‹ˆλ‹€.

     

    체크 μ „ ν›„λ₯Ό λΉŒλ“œν•˜μ—¬ 직접 확인해 보면,

     

    체크 μ „μ—λŠ” iPad μ—μ„œ 같은 앱을 λ™μ‹œμ— λ‘κ°œ λ„μ›Œ λ†“λŠ”κ²Œ λΆˆκ°€λŠ₯ν•˜μ§€λ§Œ

     

    체크 ν›„μ—λŠ” 두 개λ₯Ό λ™μ‹œμ— λ„μ›Œ λ†“λŠ” 것이 κ°€λŠ₯해짐을 확인 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.


     

    κ²°λ‘ 

    Scene-based λŠ” Deployment target 버전이 iOS 13 이상인 앱은 μžλ™ μ μš©λ©λ‹ˆλ‹€.

     

    그리고 Scene-based 앱은 Scene-based Life Cycle 둜 생λͺ…μ£ΌκΈ°λ₯Ό 관리 λ°›μŠ΅λ‹ˆλ‹€.

     

    Scene-support λŠ” opt-in κΈ°λŠ₯으둜, 같은 앱을 μ—¬λŸ¬κ°œ λ„μ›Œλ†“λŠ” 것을 κ°€λŠ₯ν•˜κ²Œ ν•΄μ£ΌλŠ” κΈ°λŠ₯μž…λ‹ˆλ‹€.

     

     

     

    끝!


     

    λŒ“κΈ€

μ–΄μ œλ³΄λ‹€ λ°œμ „ν•œ λ‚˜