본문으로 건너뛰기

WWDC26 이후 SwiftUI의 주요 변경 사항

What is new in SwiftUI after WWDC26

swiftwithmajid.com

핵심 요약

  1. SwiftUI는 swipeActions와 드래그 재정렬을 List에 한정하지 않고 ScrollView, lazy stack, 사용자 정의 레이아웃에서도 지원하도록 컨테이너 API를 확장했다.
  2. AsyncImage 캐싱과 세밀해진 툴바 표시 제어, cross-fade 내비게이션 전환이 추가돼 화면 구성과 콘텐츠 표시를 조정할 수 있는 선택지가 늘었다.
  3. Liquid Glass 변경 사항은 SwiftUI가 자동 적용하며, 문서 기반 앱의 외관과 성능도 개선됐다. Xcode에는 SwiftUI 에이전트 코딩용 skill이 추가됐다.

도입

WWDC26에서 SwiftUI는 컨테이너별 제약을 줄이고 시스템 UI를 더 세밀하게 조정하는 API를 추가했다. swipeActions와 드래그 재정렬을 여러 컨테이너에서 사용할 수 있고, AsyncImage 캐싱과 툴바 표시 우선순위도 제어할 수 있다. Liquid Glass의 일부 변경은 별도 코드 없이 적용된다.

상세 요약

컨테이너 제약 완화

SwiftUI는 swipeActions를 List뿐 아니라 ScrollView, lazy stack, 사용자 정의 레이아웃 등 다양한 컨테이너 안에서 사용할 수 있도록 확장했다. 항목에 .swipeActions를 적용하고, 바깥 컨테이너에 .swipeActionsContainer()를 붙이면 된다. 이제 스와이프 액션을 쓰기 위해 List를 선택할 필요가 없다. 관련 API의 적용 예시는 List 밖에서도 SwiftUI 스와이프 액션 사용하기에서 확인할 수 있다.

드래그 앤 드롭 재정렬에도 컨테이너 API가 추가됐다. 재정렬할 항목에 .reorderable()을 적용하고, 컨테이너에는 .reorderContainer(for:)를 붙여 변경 사항을 처리한다. 이 방식도 List, ScrollView, lazy stack, 사용자 정의 레이아웃에서 사용할 수 있다.

탭, 내비게이션, 툴바

Tab의 새로운 .prominent 역할은 검색 탭과 유사하게 뒤쪽에 분리된 탭을 구성할 때 사용할 수 있다. 내비게이션 전환에는 .crossFade가 추가됐다. 기존 자동 전환과 zoom에 더해 선택지가 늘었지만, 전환을 직접 제어하는 기능은 여전히 제공되지 않는다.

툴바에는 표시를 조정하는 modifier가 추가됐다. visibilityPriority(.high)로 작은 기기에서 우선 표시할 항목을 지정하고, ToolbarOverflowMenu에 보조 항목을 넣을 수 있다. topBarPinnedTrailing 배치는 항목을 상단 바의 trailing 위치에 고정한다. 툴바 API의 다른 설정 사례는 SwiftUI 툴바 항목의 표시와 동작 제어하기에서 다룬다.

이미지 캐싱과 시스템 디자인

AsyncImage는 캐싱을 지원한다. 캐시 용량을 직접 설정하려면 원하는 URLCache를 구성하고 이를 사용하는 URLSession을 만든 뒤, .asyncImageURLSession(session)으로 전달한다. 예제에서는 메모리 캐시를 20MB, 디스크 캐시를 100MB로 설정한다.

Liquid Glass 디자인 변경 사항 중 일부는 SwiftUI가 자동 적용한다. 글래스 tint를 비롯한 항목을 반영하기 위해 별도의 코드를 추가할 필요가 없다.

문서 기반 앱과 Xcode

문서 기반 앱은 새 외관과 성능 개선을 받았다. 글에서는 Xcode가 이미 이러한 개선 사항을 사용하기 시작한 것으로 보인다고 언급한다. Xcode에는 에이전트 코딩을 위한 SwiftUI Specialist와 What’s New in SwiftUI skill도 추가됐다.

결론

이번 업데이트는 SwiftUI 앱의 구현 방식을 전면적으로 바꾸기보다 List에 묶였던 동작, 툴바 배치, 이미지 캐시 설정 같은 구체적인 제약을 완화한다. 다만 내비게이션 전환을 임의로 제어할 수는 없고, 기본 전환 선택지만 늘었다. 문서 기반 앱과 Xcode의 에이전트 코딩 지원도 함께 변경됐다.