[WWDC] What's new in SwiftUI

Judy·2023년 7월 28일
0

WWDC

목록 보기
19/19

Swift Cahrts

새로운 프레임워크 ⭐️

state-driven charts

  • chart도 View의 일부
  • list나 table처럼 데이터를 제공한 다음 해당 데이터로 차트 콘텐츠를 작성하여 선언
  • localization, 다크 모드 및 dynamic type 자동 지원, 모든 플랫폼에서 작동

Stacks, Split Views, Scenes 세 가지 패턴에 대규모 업데이트 제공

Stack

push-pop 스타일의 네비게이션을 지원하기 위해 NavigationStack이라는 컨테이너 뷰를 도입
루트 콘텐츠를 래핑하고, navifationLinknavigationTitle() 같은 기존 API와도 잘 작동

NEW

  • navigationDestination() - navigation의 대상을 특정 데이터 타입과 연결
  • NavigationLink(value: ) { ... } - destination으로 목적지 대신 나타내는 값을 사용

데이터로 스택 구동 -> 현재 네비게이션 경로를 명시적으로 나타낼 수 있음
뷰가 스택에 푸시되면 배열에 쌓아두고 버튼 동작을 통해 첫 시작으로 한 번에 돌아갈 수 있음

Split Views

다중 열 탐색을 위한 컨테이너

  • 2열, 3열 레이아웃을 선언 가능
  • NavigationLink와 잘 작동
  • 링크 값을 사용해 list의 선택을 유도
  • 더 작은 크기의 클래스나 장치에서 자동으로 스택으로 축소되어 다중 플랫폼 앱을 빌드하기 좋음
  • NavigationStack과 함께 작동하도록 설계되어 보다 복잡한 네비게이션 구조를 구축하기 위해 구성될 수 있음

Scenes

현재 = WindowGroup

  • 앱의 기본 인터페이스를 구축하는 좋은 방법
  • 앱의 데이터에 대한 다양한 관점을 위해 여러 window를 생성할 수 있음

Window 🆕

앱에 대해 하나의 고유한 window를 선언


Environment를 사용해 프로그래밍 방식으로 SwiftUI 관리 window를 열 수 있음

  • 기본 크기, 위치, 크기 조정 가능성 등에 대한 수정자 등 window 커스텀 기능을 추가


멀티 플랫폼에선 작은 창에 대한 디자인 지원이 필요

  • presentationDetents로 두 가지 다른 크기를 구성


Xcode 다중 플랫폼 대상으로 플랫폼 간 변환이 간단
하나의 대상을 여러 플랫폼에 배포 가능

메뉴 표시줄에 관심을 줄 수 있다!
Ventura os를 사용하면 SwiftUI에서 MenuBarExtras 빌드 가능

Advanced controls

대화형 콘첸츠를 구축하기 위해 모든 API에서 다양한 개선 사항을 제공

Forms

mac OS에서 새로운 그룹인 formStyle을 사용해 디자인을 활성화할 수 있음

새로운 컨트롤을 빌드하거나 일부 read 전용 정보를 표시하는 데 사용할 수 있는 LabeledContent 뷰를 사용해 쉽게 정렬 가능

기본 스타일을 텍스트에 적용하는 것이 더 수월해짐
동일한 코드를 iOS와 공유하기도 가능, iPad도 물론

Controls

TextField

  • axis - 세로로 확장되도록 구성 가능
  • lineLimit로 지정된 경우 줄 높이만큼 제한
    -> 최소 공간 지원, 콘텐츠가 상한을 초과하면 스크롤하는 고급 동작도 지원

MultiDatePicker

  • 비연속적인 날짜 선택 지원

Mixed-State Control

DisclosureGroup

  • 여러 Toggle 그룹을 단일 Toggle로 축소 가능
  • 내부 Toggle은 각각 단일 Binding을 사용하고, 집계 Toggle은 값이 모두 일치하지 않는 경우 mixed-state를 나타내는 모든 Binding 컬렉션을 사용
  • Picker도 동일하게 작동

--- iOS ---

Button Style

  • 해시태그를 선택하기 위한 버튼 스타일 Toggle 제공
  • toggleStyle(.button)
  • buttonStyle(.bordered) - 테두리가 있는 버튼 스타일을 추가하면 토글을 구분하는데 도움
  • Button Style은 Toggle, Menu, Picker 등 버튼 모양을 지원하는 모든 컨트롤에 적용됨

Stepper

  • Stepper(..., format: .nember) - 해당 값의 형식을 제공 가능
  • Mac OS에서는 편집 가능한 Stepepr 사용 가능
  • 이제 watchOS에서도 Stepper 사용 가능

Accessibility Quick Action

  • watch에서 손을 꽉 쥐는 동작
  • 빠른 작업은 버튼을 사용하는 다른 UI 작업과 코드 공유 가능

Tables

Table

  • 이제 iPadOS에서도 Table 지원
  • 플랫폼 간 코드를 쉽게 공유 가능
  • 작은 화면에서는 적절하게 렌더링되어 여러 열이 있어도 기본 열만 표시

ToolBar

  • iPadOS에서는 개선된 ToolBar 디자인이 추가되어 세련미를 더할 수 있음
  • 일부 toolbar item은 사용자화를 허용하지 않음. 사용자 지정 가능한 작업은 toolbar 중앙에 표시되거나 오버플로 메뉴에 표시되는 secondaryAction toolbar로 구성됨
  • 기본적으로 searchable 수정자로 기본 검색을 지원
  • search field에서 토근화된 입력과 제안을 지원해 구조화된 검색 쿼리 구축 가능

Sharing

Photos

PhotoPicker

  • 사진 및 비디오 선택을 위한 다중 플랫폼 및 개인 정보 보호 API
  • 앱의 어느 위치나 배치 가능
  • 활성화 시 사용자 라이브러리에서 사진(비디오)를 선택할 수 있는 표준 사진 선택 UI 제공
  • 콘텐츠 유형 필터링, 선호 사진 인코딩과 같은 추가 구성 옵션 제공

Sharing

  • 각 플랫폼에는 앱의 콘텐츠를 공유할 수 있는 표준 인터페이스가 존재
  • watchOS 9부터 watch 내에서 공유 시트 표시 가능
  • 공유할 콘텐츠(item)와 공유 시트에서 사용할 미리보기(preview)만 작성하면 공유 아이콘 버튼이 자동으로 생성
  • 메뉴 및 플랫폼과 같이 적용되는 상황에 맞게 조정

Transferable

  • PhotoPicker, ShareLink 등 응용 프로그램 간에 전송되는 방식을 설명하는 Transferale 프로토콜을 활용
  • 드래그 앤 드롭과 같은 기능을 강화 - dropDestination API
  • String, Data, URL, Image 등 표준 타입은 이미 Transferable을 준수
  • 사용자 정의 타입에도 Transferable 구현 가능

Graphics and layout

Shape Styles

  • .blue.fradient - 그라데이션 효과
  • shadow() - 그림자 효과

SF Symbol과 ShapeStyle 확장 기능을 상ㅇ하면 멋진 아이콘을 만들 수 있다 👍

Preview

  • 동시에 여러 구성에서 뷰를 볼 수 있는 편리한 방법
  • Xcode 14에서는 구성 코드를 작성하지 않고도 여러 모양, 크기, 방향으로 미리보기 가능

Animation

  • Text는 weight, style 및 layout에서 아름다운 애니메이션 가능

Layout

Grid

  • 2차원 그리드로 정렬하는 새로운 컨테이너 뷰
  • 하위 뷰를 미리 측정하여 여러 column에 걸친 셀을 활성화하고 자동 정렬을 활성화
  • Grid, GridRow 및 gridCellColumns을 이용해 그리드를 점진적으로 구축

Layout

  • Stack 및 Grid를 구현해 자신만의 Layout을 구축 가능
  • Layout 프로토콜을 이용하면 뷰 계층 구조의 특정 요구 사항에 맞는 모든 종류의 레이아웃을 구축 가능




WWDC - What's new in SwiftUI

profile
iOS Developer

0개의 댓글