iOS13이 공개되면서 UI적 변화가 있다고한다.
www.hackingwithswift.com/articles/193/whats-new-in-ios-13
1. Swift UI 란?
Xcode 11버전에서 이른바 swift UI라는 이름으로 새로운 방식의 디자인 인터페이스를 제공한다. 애플은 오랫동안 스토리보드 혹은 프로그래밍적으로 짤 수 있는 UI 방법 두 가지를 제공했다. swift UI는 이 방식을 탈피하여, 나눠지는 화면 경험을 제공한다.
- 어떻게 레이아웃이 보이고 작동하는지에 대한 새로운 UI
- 실시간으로 Swift 코드 작성시 UI 미리보기를 제공한다.
- UI변수 연결인 outlets나 action과 같은 애들을 컴파일 할 때 체크하여 런타임때 UI Fail의 위험을 감소시킨다.
- 자바의 스윙, React Native와 같은 멀티 플랫폼 프레임 워크이다.
- 다만 스윙, React Native와의 차이점은 하나의 코드가 모든 플랫폼에서 공통된 의미로 작동한다는 멀티 플랫폼의 의미가 아니라 애플의 플랫폼 (Mac, Watch, ... 등)에서 가져다 쓸 수 있다는 프레임 워크라는 의미이다.
- 속도가 매우 빠르다.
기존의 스위프트 개발자라면 UI를 만들때 스토리보드 내에서 뷰 컨트롤러를 넣고, 테이블 뷰를 넣고, 테이블 뷰 셀을 넣고 이 파일들을 각각의 swift 파일에 연결하며, 각각의 UI를 컨트롤 버튼을 누른채 드래그하여 만들었을 것이다. 혹은 viewDidLoad등에서 UI를 프로그래밍적인 코드로 작성해서 생성했을 것이다. Swift UI는 이 방식을 벗어나 이 두가지 방식을 동시에 지원한다.
2. Swift UI는 UIKit 대체할 수 있는가?
실제로 Swift UI는 UIKit의 위에서 빌드 된다. Swift UI로 작성된 코드는 내부에서 UIKit에 있는 컴포넌트 소스로 변환해서 컴파일 한다는 의미이다.
애플의 플랫폼에서는 향후에는 Swift UI를 밀어 붙일 것이므로 UIKit을 없앨수도있다고 한다. 하지만 아직까지 Swift UI만으로 모든 것을 대응할 수 없어서 둘 다 할줄알아야한다고 한다.
- 제한된 API 영역
- UICollectionView의 경우엔 현재 SwiftUI에서 대응되는 것이 없다. 그러므로 나는 컬렉션뷰를 써야한다면 UIKit의 UICollectionView를 써야한다.
- 제한된 SDK
- OS13 이상부터 지원하는 Swift UI이므로 그 아래 버전의 UIKit을통해 작성된 앱들을 무시할 수 없다. 물론 이후에는 iOS13이상일 경우 Swift UI로 작성을해야하지만, 바로 적용시킬 수는 없다.(시간이 소요될 것이다.
- 제한된 지원
- UIKit은 십년이 넘는 기간동안 지원되왔기에, 여러 예외사항 문제들을 해결해온 노하우가 있으며, 그에 해당하는 많은 라이브러리들이 분포되어있다. 그러므로 이제 막 공개된 Swift UI에 나타날 수 있는 문제, 이를 활용한 라이브러리가 보급되기엔 당장에 무리가 있다.
그러나 미래를 봤을 때, UIKit의 미사용은 예견된 일이므로(위의 문제들은 해결될 것) Swift UI는 반드시 학습해야하는 영역이란 의미이다.
Swift UI와 UIKit을 같이 쓰고 싶다면, UIHostingController를 사용하여 할 수 있다고 한다.
원문 : https://g-y-e-o-m.tistory.com/149