[iOS] SwiftUI 1

Zoe·2022년 11월 17일
0

iOS

목록 보기
12/39

SwiftUI 1


✅ 구조체 vs. 클래스

✅ basic guide

  • 각각의 뷰를 만듦
  • 각각의 뷰를 적용시키는 것
  • 웹 개발 느낌으로 보면 됨
  • ContentView
  • ContentView_Previews
  • stack view : VStack, HStack
  • stack view 자체에도 속성을 줄 수 있음 : ex) .background
  • 오른쪽에 gui 환경 -> 알아서 코드를 넣어줌

✅ 데이터 변화 @State

  • 탭 제스처 추가 : .onTapGesture
@State // @State : 값의 변화를 감지해서 뷰에 적용
private var isActivated: Bool = false

self.isActivated.toggle() // true이면 false / false이면 true로 변환시켜줌
// SwiftUI가 아예 로직 자체를 함수로 만들어 놓은 것
  • withAnimation : 애니메이션을 같이 처리해줌.
  • NavigationView로 전체 View를 감쌈
  • NavigationLink(destination:) : destination -> 다음에 보여질 화면
  • .edgesIgnoringSageArea(.bottom) : 아래만 채움

✅ 데이터 연동 @Binding

  • 데이터 상태를 서로 묶는다.
  • 뷰와 뷰끼리 서로 데이터 공유가 가능하게 됨.
  • cmd + click : 해당 파일로 가기
  • 외부에서 접근해야 하기 때문에 private으로 하지 않음
  • binding을 사용하려면 기본 생성자를 구현해야 함.
@Binding
var isActivated: Bool

init(isActivated: Binding<Bool> = 
	.constant(false)) {
    .isActivated = isActivated
}


// ContentView에서 MyVstackView를 호출할 때
MyVstackView(isActivated: $isActivated) //그럼 서로 연결됨
  • 사용하는 건 똑같이 사용하면 됨.

✅ WebView

  • import WebKit

  • UIKit에 있는 코드를 SwiftUI에서 어떻게 사용하느냐

  • No StoryBoard Setting강의도 보기

  • 인터넷 허가 : info.plist -> App Transport Security Setting -> Allow Arbitrary Loads -> Value:Yes

  • SwiftUI는 구조가 class가 아니라 struct로 되어 있음

// MyWebview.swift

import SwiftUI
import WebKit

// UIViewRepresentable : uikit의 uiview를 사용할 수 있도록 한다.
struct MyWebview: UIViewRepresentable {
	// ui view 만들기  
    
    // 업데이트 ui view 
    // -> swiftui에서는 데이터가 변경될 때 view를 다시 그리는데 
    // 그걸 ui view에서는 업데이트 해줘야함
}
  • UIViewRepresentable과 UIViewController가 호환이 가능하다

✅ Text

//DateFormatter

static let dateFormat: DateFormatter = {
	let formatter = DateFormatter()
    formatter.dateFormat = "YYYY년 M월 d일"
    return formatter
}()

var today = Date()

Text("오늘의 날짜 : \(today, formatter: ContentView.dateFormat)")

✅ Image

  • sf symbol

✅ Stack

  • stack 쌓는다.

  • VStack(수직), HStack(수평), ZStack(뷰를 겹치기)

  • ZStack : view를 중첩. 위로 덮어 씌우는 것.

  • .zIndex : 깊이 순서를 줄 수 있음.

  • 스택이 중요한 이유 : 가중치를 주면서 뷰를 블럭 쌓듯이 쌓는 것.

profile
iOS 개발자😺

0개의 댓글

관련 채용 정보