본문 바로가기
WWDC

WWDC 20 - App essentials in SwiftUI

by vapor3965 2021. 6. 19.

목차


    • 세션보면서 정리한 내용입니다. 해석이 잘못된 경우가 있을수있으니 발견하시면 댓글로 남겨주시면 감사하겠습니다🙏🏻

    https://developer.apple.com/videos/play/wwdc2020/10037/

     

    App essentials in SwiftUI - WWDC 2020 - Videos - Apple Developer

    Thanks to the new App protocol, SwiftUI now supports building entire apps! See how Apps, Scenes, and Views fit together. Learn how easy...

    developer.apple.com

     

     


    요약

    • 앱은, App - Scenes - Views로 이루어져있다.
      • View는 아주 작은, 화면을보여주는 요소가된다.
      • Scene은 각 플랫폼마다 독립적으로 나타날수있게해준다.
      • Scene들의 집합으로, 전체의앱 App 을 만들어낸다.
    • 공유되는 모델을 통해, 독자적인 상태를 갖는 Scene들을 만들어낸다 ( MacOS, iPadOS)
    • Document based App기반을위한 DocumentGroup Scene이있다
      • BuildDocument-Based Apps in SwiftUI - 2020 참고
    • 👍또한, App시작코드에서, Settings 을통해 MacOS 설정메뉴를 추가할수있다.
    • 👍또한, 명령어단축키지원도가능하다.

     

     

     


    2020년부터 scenes, apps을 위한 새로운 API를 함께 프레임워크에 추가했다.
    이제는 SwiftUI로만으로완전하게 앱을 만들수있게됐다.


    iPad, Mac 은 여러개의 Scene을 가질수있다.

    👍View는 아주 작은, 화면을보여주는 요소가된다.
    Scene은 각 플랫폼마다 독립적으로 나타날수있게해준다.
    Scene들의 집합으로, 전체의앱 App 을 만들어낸다.

    App의 시작지점이며,
    boilerplate를 제거했으며,
    아주 간결하다.
    App 프로토콜을 채택하는 커스텀 BookClubApp struct(값)으로정의했다.
    또한, Scene 프로토콜을 채택하는 body를 return하고있다.

    ReadingListViewer를 이용하여 실제 앱의 interface를 정의했다.

    또한 WindowGroup이라는 scene안에 포함되어있다.

    각 부분들은 다음과같이 App, Scene, View의계층구조를담당한다.

    정말 간결한 구조지만, 이안에 엄청많은 자동적이고, 지능적인행동들이 포함되어있는 상태이다.

    앱은 공유되는 모델을 각 Scene에게 제공한다.
    그리고 각 Scene들안에 있는 View들의 상태는 독립적이다!
    👍——> 바로 이것이 Scene의 핵심이다.

    • 심지어, App Switcher에서도 동일한 이름이지만, 선택된책들의이름이 다르다.
      • 이것은 Navigation Title 라고부리는 Modifier을통해 자동적으로된다.

    Mac에서는 WindowGroup을 사용하면 자동적으로 SwiftUI가 menu item을 제공한다.

    • 물론 Command-N을통해서도 가능함

    이렇게 NavigationTitle이 아래처럼 적용된다.

    또한, Window창에서도 각 Scene들을 확인할수있따……>!

    Macos는 여러개의 Scene들을 하나의 윈도우안에서 그룹핑하는것을 지원한다.
    Merge를 누르면…..

    👍 이렇게 탭으로나타난다…….>!! 그냥 자동적으로 지원해줌.

    ( 실제로 데모프로젝트로 실행해보니 탭으로나타난다...!! ) 

    필요에의해, WindowGroup이 여러개의 각 독자적인 Scene들을 만들어낸다.

    각 Scene들의 상태는 독자적이기때문에, 각 Scene의 state를 저장하는 새로운 property wrapper를 소개했다 ( SceneStorage )

    공유되는데이터모델을 기반할수도있지만,
    Document-based app도 있을수있다.
    이런경우에,👍 DocumentGroup scene을 지원한다.
    자동적으로 오프닝,에디팅,세이빙을 지원한다
    자세한건 WWDC


    👍또한, MacOS에서 세팅화면을 제공하기위해 #if #endif - Settings 를통해 지원할수있다.

    👍또한 단축키명령어지원을 위한, commands modifer도 있다!!

    'WWDC' 카테고리의 다른 글

    WWDC 19 - Combine In Practice  (0) 2021.06.19
    WWDC 19 - Introducing Combine  (0) 2021.06.19
    WWDC 20 - Data Essentials in SwiftUI  (0) 2021.06.17
    WWDC 20 - Introduction to SwiftUI - (2)  (0) 2021.06.17
    WWDC 20 - Introduction to SwiftUI - (1)  (0) 2021.06.17

    댓글