- 세션보면서 정리한 내용입니다. 해석이 잘못된 경우가 있을수있으니 발견하시면 댓글로 남겨주시면 감사하겠습니다🙏🏻
https://developer.apple.com/videos/play/wwdc2020/10037/
요약
- 앱은, 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 |