[SwiftUI] SwiftUI란?

Lee Youjin·2023년 6월 28일

SwiftUI 공부하기

목록 보기
1/4
post-thumbnail

SwiftUI에서는 놀랍게도 최소한의 코드만으로 Swift의 성능을 사용하여 모든 Apple 플랫폼 전반에서 멋진 앱을 빌드할 수 있습니다. 어떤 Apple 기기에서나 단 하나의 도구 및 API 세트를 사용하여 모든 사용자에게 더 나은 경험을 제공할 수 있습니다.
애플 공식 홈페이지

SwiftUI

SwiftUI는 Swift 기반의 프레임워크로, WWDC19에서 처음 공개됐다.
선언형 프로그래밍이라는 점이 가장 큰 특징인데, 선언형 프로그래밍은 무엇을 수행하는가에 초점을 둔 프로그래밍 기법이다. 앱에 대한 UI와 동작을 선언해주는 형식을 따르기 때문에 코드의 가독성과 재사용성을 높일 수 있다.

SwiftUI는 기존 UIKit, AppKit, WatchKit 등 나누어져 있던 프레임워크를 통합해 사용할 수 있다는 점에서 큰 의미가 있다. 즉 ... 원래는 iPhone에서 동작하는 애플리케이션을 만들려면 UIKit을 import해서 코드를 작성하고, Apple Watch에서 동작하는 애플리케이션을 만들려면 WatchKit을 import해서 코드를 작성해야 했는데 SwiftUI에서는 이 모든 게 통합되어 있다는 것! 더욱 간편해졌다.

이 밖에도 다크모드나 글자 크기를 유동적으로 조정해주는 등 접근성이나 로컬라이징이 매우 뛰어나서 많은 iOS 개발자들의 사랑을 받고 있다.

장점

위에 설명한 부분을 제외하고 다른 장점들도 많다.

1. 직관적인 코드

일단 선언형 프로그래밍을 채택하고 있다 보니 코드가 굉장히 직관적이다.

import SwiftUI

struct AlbumDetail: View {
	var album: Album

	var body: some View {
		List(album.songs) { song in 
			HStack {
				Image(album.cover)
				VStack(alignment: .leading) {
					Text(song.title)
					Text(song.artist.name)
						.foregroundStyle(.secondary)
				}
			}
		}
	}
}

이런 식으로 뒤에 . 을 붙여서 체이닝이 가능하고, 스타일이나 애니메이션을 조정할 수 있다. 한눈에 봐도 알아보기 편하고, 유지보수 시 코드 가독성이 좋고 편리하다는 장점이 있다.

2. UIKit의 스토리보드 단점 해결

기존 UIKit에서 스토리보드로 작업하게 되면 데이터의 변화를 바로 확인할 수 없었다. 이 말인 즉슨 ... 컴포넌트가 어떻게 화면에 뿌려져 있는지는 볼 수 있었지만 실제 앱을 빌드했을 때 화면이 깨지거나, 다크 모드가 적용되지 않거나 하는 이슈들이 많았다는 것!
SwiftUI에서는 코드를 입력함과 동시에 미리보기로 오른쪽에 있는 화면에 코드 실행 결과가 동기화된다. Xcode에서 변경 사항을 그때그때 재컴파일하고 실행 중인 앱에 삽입하기 때문이다. 이러한 기능을 공식 홈페이지에서는 라이브 앱 이라고 부르는 것 같은데 ... 정확한 원문은 다음과 같다.

Swift 컴파일러 및 런타임은 Xcode 전체에서 기본 제공되므로 앱을 지속적으로 구축하고 실행할 수 있습니다. 개발자에게 표시되는 디자인 캔버스는 사용자 인터페이스가 아닌 라이브 앱과 비슷합니다. 또한 Xcode는 동적 대체를 사용하여 직접 라이브 앱에서 편집된 코드로 바꿀 수 있습니다.
애플 공식 홈페이지

3. UIKit 및 AppKit과의 호환

기존에 UIKit으로 앱을 만들어놨는데 그럼 SwiftUI로 또 만들어야 하나?
라는 의문이 있을 수 있다! 다행히 SwiftUI는 UIKit 및 AppKit와 호환되도록 설계되어 있기 때문에, 기존 부분은 유지하면서 새로운 부분을 구축할 때 SwiftUI를 사용할 수 있다. UIKit을 대체한다는 개념이 아니라 호환된다는 개념으로 접근하면 조금 더 편리하게 사용할 수 있을 것 같다.

UIKit과 SwiftUI를 동시에 사용할 경우 UIHostingController 를 사용한다고 한다. 이 부분은 아직 안 해봐서 나중에 해본 후 추가 포스팅을 올려봐야겠다!

4. 생명주기 관리 필요 없음

UIKit과 다르게 SwiftUI에는 생명주기라고 부를 만한 기능이 없다. 해봤자 onAppear 아니면 disAppear 정도 ...? 생명주기를 따로 공부하면서까지 잡아줄 필요는 없기 때문에 훨씬 더 간편하게 코드를 작성할 수 있다.

단점

1. 낮은 버전을 지원하지 않음

현재 SwiftUI는 iOS 13, Xcode 12 이상부터 지원이 가능하다. 다른 말로 하면 iOS 12 이하는 버전 지원이 불가능하다.
그러나 공식 통계를 보면 지난 4년 간 도입된 기기의 90%는 iOS 16을 사용하고 있고 ... iOS 14 이하 버전을 사용하고 있는 기기는 전체의 2% 밖에 되지 않는다. 그렇게 큰 단점이 되지는 않을 것 같다는게 개인적인 의견이다.

2. 부실한 라이브러리 지원

아무래도 19년도에 유명한 Swift 라이브러리들은 SwiftUI에 맞추어 업데이트된 것들도 많지만 만약 마이너한 기능이라면? 아직 SwiftUI에 없을 가능성도 있다. 이 부분도 아직 제대로 SwiftUI를 써본 게 아니라서 자세히는 못 적겠지만 사용하고 후기를 추가해볼 예정이다.

총평

대체적으로 UIKit에 비해 간편해진 코드 작성 방식, 그럼에도 UIKit과의 자유로운 호환성이 SwiftUI의 큰 장점인 것 같다.
SwiftUI에 대해 조사하면서 가장 기대되는 부분은 생명주기 관리가 필요없다는 부분과 라이브 앱 기능이다. UIKit으로 프로젝트를 진행하면서 오토레이아웃에 억까당하던 지난 날들 ... 라이브 앱은 얼마나 간편할지 진짜 기대된다!
빨리 SwiftUI를 써보고 강의 정리와 함께 돌아오겠다 👀

참고자료

Apple Developer - SwiftUI
UIKit과 SwiftUI 무엇이 다를까?
SwiftUI란?
SwiftUI 란? 무엇인가 (개발하면서 느낀점 위주)

profile
꾸준히 발전하고 있습니다.

0개의 댓글