View

SWIFTUI

go back to basic - @main 플젝만들면 항상생기는 파일 이건 몰까?

어떠한 프로젝트를 만들면 항상 App파일과 ContentView가 만들어진다. 그리고 WindowGroup안에는 ContentView가 들어있다. 이것은 어떻게 작동하는 방식일까? @main은 Type 기반 프로그램 엔트리포인트로 아 너가 앱이 최초 시작점이자 진입점이구나를 알수 있다. 보면 이 구조체는 App프로토콜을 채택하고 있다 이 프로토콜은 시스템이 앱을 실행하기 위해 호출하는 main() 메서드의 기본 구현을 제공합니다. 모든 앱 파일 중 정확히 하나의 진입점을 가질 수 있습니다. 또 다른게 body를 보면 Scene 프로토콜이 있다. 씬은 뷰계층구조의 루트뷰를 포함하고 있고 시스템에 의해 관리되는 라이프사이클을 가지고 잇다. setting과 같은 구체화된 Scene type을 줄 수 도 있다...

SWIFTUI

근본으로 돌아가자 - View는 왜 구조체로 생성할까?

UIkit에서는 주로 뷰를 class로 만들었는데 swiftUI에서 보면 뷰를 구조체로 만드는 것을 발견했을 것이다. 왜 근데 유킷과 달리 구조체로 만들까? 1. 뷰 자체가 가벼워진다. 그 전에 Struct와 Class차이를 알아야 한다. 클래스는 상속이 가능하지만 구조체는 상속이 불가능하다. 클래스는 참조타입, 구조체는 값타입 -> 구조체는 메모리영역에서 Stack, 클래스는 Heap영역에 있다. 스택은 메모리 올라갔다가 사용이 종료되면 바로 삭제되지만, 힙에 올라간 코드는 가비지컬렉터에 의해 정리 - UIKIt에서는 수많은 속성과 메서드가 있는 클래스의 서브클래스다. 간단한 뷰를 만들더라도 사용하던 안하던 이미 속성이 많이 가지고 있다. 하지만 구조체로 뷰를 생성하다보니까 상속된 크기없이 그 구조체만..

SWIFTUI

협업의 기초 - View분리 방법

원래의 뷰 struct CouplingView: View { private let mycode = UserManager.shared.currentUserUID @State private var clickPasteBtn = false @Binding var isOpen : Bool var body: some View { NavigationView { VStack{ ZStack { HStack{ Button(action: { isOpen = false }){ Image(systemName: "xmark") .resizable() .foregroundColor(.tertiaryLabel) .frame(width: UIScreen.getWidth(20),height: UIScreen.getHeight(20)) ..

2료일
'View' 태그의 글 목록