아직 UIKit을 완벽하게 다루는 건 아니지만
SwiftUI 로의 테크 트렌드가 옮겨가는 만큼 시간이 있을 때 조금이라도 SwiftUI에 대해서 알아두려고 한다.
애플 공식사이트의 예제를 보고 작성한다.
프로젝트 생성
위와 같이 프로젝트를 생성하면 디렉토리에는 아래와 같이 파일이 생성된다.
LandMarksApp.swift
import SwiftUI
@main
struct LandMarksApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
얼핏 봐도 앱의 시작포인트 같다.
An app that uses the SwiftUI app life cycle has a structure that conforms to the App protocol. The structure’s body property returns one or more scenes, which in turn provide content for display. The @main attribute identifies the app’s entry point.
해석하자면,
SwiftUI 앱 라이프사이클을 사용하는 앱은 App 프로토콜을 준수하는 구조를 가지고 있습니다. body 구조체의 속성은 하나 이상의 씬을 반환하며, 이는 차례로 표시할 콘텐츠를 제공합니다. 속성 은 @main앱의 진입점을 식별합니다.
ContentView.swift
import SwiftUI
struct ContentView: View {
var body: some View {
Text("Hello World!")
}
}
#Preview {
ContentView()
}
마찬가지로 ContentView의 타입은 Struct이고 이번에는 View 프로토콜을 채택하고있습니다.
View를 조금 더 자세히 보면
1. View 타입은 현재 보고있는 뷰의 바디를 대표한다.
2. 커스텀 뷰를 생성할 때, Swift는 View/body-swift.property를 필요로하는 implementation 에서 이 타입을 추론한다.
-> View/body 형식으로 커스텀뷰를 생성할때 기본타입이 View가 된다는 뜻!
-> 다른 UI 프로퍼티를 보면 알겠지면 결국 Table, Scroll 같은 뷰의 가장 부모 클래스가 View가 되서 이걸 상속할거다!
associatedType 에 대해서는 나중에 조금 더 자세히 공부해보자
1. 커스텀뷰를 구현할 때 우리가 구현할 뷰의 컨텐트를 제공하기 위해서 body프로퍼티를 구현해야한다.
-> 그래서 위에 코드 처럼 View 프로토콜 안에 body 프로토콜을 생성하게 되는 것이다!
미리보기
`#Preview` 를 사용해서 미리보기에서 보여줄 구조체를 결정한다.
#Preview {
ContentView()
}
'SwiftUI' 카테고리의 다른 글
[iOS / Swift] UIFont Custom 적용과, UIButton configure (4) | 2024.01.16 |
---|---|
[SwiftUI] Tutorial 05 - MapKit 사용 기초, Divider (1) | 2023.12.29 |
[SwiftUI] Tutorial 04. Custom Image View 만들기 - shadow, overlay, shape (0) | 2023.12.17 |
[SwiftUI Tutorial] 03. Stack 사용하기 (0) | 2023.11.04 |
[SwiftUI] SwiftUI Tutorial02 - Customize the text view (0) | 2023.11.04 |