Mobile(25)
-
[ UIKit ] - UIWindow의 역할 (Windows and Screens)
Window 는 MS 의 운영체제...가 아니고, 창문, 보이는 부분들과 연관 되어 있는 것 같다. 공식 문서를 살펴보니 The backdrop for your app's user interface and the object that dispatches events to your views. UIWindow 의 개념을 보니 이러한데 해석을 해보면 앱의 UI 에 대한 배경 이벤트를 뷰에 전달하는 객체 라고 보면 될 것 같다. API Collection 의 분류로 보면 Windows and Screens 인데 영어만 봐도 이게 보이는 뷰 즉, 화면과 연관되어 있다는 것을 어렴풋이 알 수 있을 것 같다. Window Objects act as containers for your app's onscreen co..
2023.11.17 -
Macro 에 대해서 알아보자. ( 수정중 )
State 를 공부하다가, Observable() 의 정의를 또 타고들어가다가 이것이 Macro 타입이라는 걸 알게되었다. Share observable state objects with subviews 부분에서 https://playground-coding.tistory.com/78 Macro 이게 무슨 역할을 하는 타입일까? Struct, Class, Instance Method, Properties, enum 등 이런 것들은 문법을 공부할 때 한번씩은 보던 것들인데, Macro 는 뭐지.. State 에 저장된 Observable 객체를 하위 뷰와 공유하려면 객체 참조를 하위 뷰에 전달 SwiftUI는 객체의 관찰 가능한 속성이 변경될 때마다 하위 뷰를 업데이트하지만 하위 뷰의 body가 속성을 읽..
2023.11.12 -
@PropertyWrapper - ObservableObject, EnvironmentObject (수정중..)
이전에 살펴보았던, State 프로퍼티는 뷰의 상태를 저장하는 방법을 제공하며 해당 뷰에만 사용할 수 있다. 즉, 하위뷰가 아니거나 State Binding 이 구현되어 있지 않은 다른 뷰는 접근할 수 없다. 상태 프로퍼티는 일시적인 것이어서 부모 뷰가 사라지면 그 상태도 사라진다. ObservableObject Observable 객체는 여러 다른 뷰들이 외부에서 접근 할 수 있는 지속적인 데이터를 표현하기 위해 사용된다. → 객체가 변경되기 전에 내보내는 publisher(게시자) 가 있는 객체 유형 class Contact: ObservableObject { @Published var name: String @Published var age: Int init(name: String, age: Int..
2023.11.12 -
Property Wrappers 에 대해 알아보자 - State, Binding ①
SwiftUI 에서 Property Wrapper들의 종류가 적지 않은 걸로 안다. 앞에는 주로 @ 표시를 붙이고 사용하는데, 그 종류를 알아보기 앞서 Property Wrapper 가 가지는 의미에 대해서 알아봐야겠다. Swift 내에서 프로퍼티가 가지는 속성과 역할을 보면, Properties - Access stored and computed values that are part of an instance or type. 저장되거나 계산되는 인스턴스 또는 타입의 일부인 value(값)에 액세스(접근) 한다. 그렇다면, 속성을 감싸서 사용할 때 감싼 걸 가지고 와서 사용할 것 같은 프로퍼티 래퍼 이 녀석은 Property Wrapper A property wrapper adds a layer of s..
2023.11.04 -
ViewBuilder 는 어떻게 만드는 걸까? - ②
앞서 ViewBuilder의 개념에서 하위 뷰 생성 클로저에 매개변수에 대한 속성으로 사용해 해당 클로저가 여러 하위 뷰를 제공할 수 있도록 해준다고 한다. 는 걸 알아봤다. 그런데 뷰빌더를 어떻게 만들어서 갖다쓰는 걸까?! custom container view 를 만들어서 레고 블록처럼 가져다 쓸수 있다고 해야할까.. 하위 뷰는 뷰 선언부를 작고 가볍게 재사용할 수 있는 블록으로 나누는 방법을 제공한다. 하위 뷰에는 한계가 있는 컨테이너 뷰의 콘텐트가 정적이기 때문에 하위 뷰가 레이아웃(Layout) 에 포함될 시점에 하위 뷰에 포함될 뷰를 동적으로 지정할 수 없다. 우선 백문이불여일타라고, 눈으로 보고, 코드부터 짜봤다. @ViewBuilder 를 생성하기 위한 조건. 1. 라는 제너릭 타입같은 놈..
2023.10.07 -
ViewBuilder 란 무엇일까? - ①
클로저에서 뷰를 구성하는 사용자 정의 매개변수 속성! @resultBuilder struct ViewBuilder ViewBuilder 를 하위 뷰 생성 클로저 매개 변수에 대한 매개변수 속성으로 사용하여 해당 클로저가 여러 하위 뷰를 제공할 수 있도록 해준다. 예를 들어, contextMenu 함수는 뷰 빌더를 통해 하나 이상의 뷰를 생성하는 클로저를 허용한다. NOTE 참고로,, contextMenu 는 watchOS 6.0 - 7.0 에서 deprecated(더 이상 사용되지 않음..) 되었따.. func contextMenu(@ViewBuilder menuItems: () -> MenuItems) -> some View where MenuItems : View Text("Turtle Rock") ..
2023.09.16