본문 바로가기
iOS/WWDC

[WWDC 2021] What's new in SwiftUI

by HaningYa 2021. 6. 9.
728x90
 

What's new in SwiftUI - WWDC 2021 - Videos - Apple Developer

There's never been a better time to develop your apps with SwiftUI. Discover the latest updates to the UI framework — including lists,...

developer.apple.com

Intro

3단계로 발전해 나왔음, 이번에는 release 3

원래 있던 UIKit, AppKit과 같이 사용할 수 있음 -> 새로운 feature 만들때 사용해봐~~ (응 iOS13이상이쥬~)
- 맥 아이패드 아이폰에 노트앱 SwiftUI로 만들어졌음
- 맥의 아바타 Picker로 SwiftUI로 만들어졌음

expanding app to new platform -> shortcut app 만들때 사용하면 좋음
redesign your app -> apple pay purchase 가 SwiftUI로 다시 만들어짐
tips 도 워치랑 아이폰
weather app 도 SwiftUI로 다시 만들어졌음

Better lists

list, grid
url image async로 받아올 수 있음

  • placeHolder도 제공함
  • 로드된 이미지에 modifier적용 가능함
  • error handling에 animation 적용가능
  • 모든 플랫폼에서 사용 가능함

Pull to refresh

  • 이번에 새로 나온 concurrency keyword 인 await 를 통해 UI blocking 없이 refresh 가능

.task modifier

  • .task modifier를 통해서 async task를 view의 생명주기에 붙일 수 있다.
  • view가 없어지면 자동으로 cancel 된다.
  • 첫번째 이미지 배치를 들고올 때 사용 가능하다.
  • async 하게 새로운 이미지가 가능해 질 경우 for 문 돌면서 리스트 업데이트 할 수 있다. (위 예시 코드)
  • Discover concurrency in SwiftUI WWDC2021
  • Swift concurrency: Update a sample app WWDC 2021

이전에 이렇게 했었는데 뭐가 달라지면 전부를 다시 Reload해야되서 추천되지 않는다.
이런 식으로 쉽게 collection 내부의 binding에 접근 가능하다.
와씨 드디어 seperator tint modifier나왔구나
와 listRowSeperator 없앨려고 개고생 했었는데 하 ㅠㅠ
swipe action을 통해 쉽게 구현할 수 있다.
앞 뒤 edges 가능하다.
macOS에서는 이런식으로 표현된다
각각의 Row에 background 줄 수 있는 inset 추가되었다.
이런 복잡한 구조도 Table로 간단하게 구현가능하다.
table 은 multi selection 과 sorting 가능하다.
FetchRequest를 통해 coreData 에서 받아올 수 있음
Fetch Requst를 통해 한방에 multi section list를 동적으로 구성가능

Beyond lists

search 는 모든 플랫폼에서 신경써야할 부분이다
.searchable modifier를 사용하면 자동으로 적절한 곳에 searchField를 만들어 준다.

  • Craft search experience in SwiftUI WWDC2021

drag and drop 에서 preview 를 통해 dragging 될떄 프리뷰 보여줄 수 있다 

  • itemprovider를 통해 다른 프로세스에서 데이터 공유할 수 있었다.
  • SwiftUI에서 이 기능을 다른데도 써봤다.

ImportFromDevicesCommands를 통해 받아올 수 있다.
iphone 을 통해 사진을 찍어서
이렇게 가져올 수 있다.

data export 내용도 있지만 생략

Advanced graphics

SFSymbol에 기능이 추가되었다.
4가지 모드가 있음
기본 컬러들
앞으로 base symbol 만 입력하고 .fill 같은 타입 지정 안해도 SwiftUI가 알아서 세팅해줌, iphone에서는 fill로 macOS에서는 아니게 나타남
CanvasView를 통해 UiKit의 DrawRect 와 비슷한 구현할 수 있다. 모든 그림을 각각의 frame에 그려준다.
gesture를 통해서 확대
모든 view에 accessibility를 제공할 수 있다.
TImelineView를 통해 시간별로 view를 Update 수 있다.
watchOS8에서 AOD가 개선됬는데 TimelineView를 통해서 preload 할 수 있다.
여러 Scheduler를 사용 가능하다.
privacySensitive modifier를 통해 위젯이나 view에서 lock 상태때 숨길 수 있다.
material background
safeAreaInset과 활용할 수 있다.

Text and keyboard

mark down support
new attribute
text에서 Localize 가능 (xcode13)
dynamic type
macOS textSelection modifier, iOS long press
textSelection modifier 어느 View에나 적용 가능
formatting text
text format style
onSubmit을 통해 키보드 동작을 추가할 수 있다.
submitLabel modifier
키보드에 toolBar 추가 가능

 

focus를 줄 수 있다.
enum 을 통해 focus를 줄 수 있다. -> toolbar를 통해 focus 이동 가능
focus를 통해 keyboard dismiss 가능

More Buttons

버튼 스타일들이 많아졌다.
iOS bordered button 추가됨
prominence..?
.large
keyboardShortcut modifier
dark/light/accessibility 자동 대응
.destructive, confirmationDialog
menu
menu에서 indicator 없앨 수 있게 되었다.
primary action 을 따로 정할수 있게 되었다.

 

Toggle
ControlGroup
controlGroup + menu 

728x90

'iOS > WWDC' 카테고리의 다른 글

WWDC 2024 힙메모리 분석하기  (0) 2024.07.09
WWDC 2014: session 502 AVAudioEngine in practice  (0) 2024.05.27
WWDC 2021 Watch list  (2) 2021.06.09
[WWDC 2021] What‘s new in Swift  (0) 2021.06.09
Introducing PencilKit  (0) 2020.09.29

댓글