SwiftUI
4 posts
Property wrapper - @ObservedOject, @EnvironmentObject

👀 Property Wrapper란? @ObservedObject와 @EnvironmentObject 모두 @State와 @Binding과 마찬가지로 property wrapper 입니다 ! Property wrapper란 속성 감싸기를 통해 코드를 더욱 간결하고 읽기 쉽게 만드는 데 사용되는 기능입니다. 이를 통해 코드를 더욱 직관적이고 명확하게 작성할 수 있습니다. 💡 @ObservedObject SwiftUI View가 관찰해야 하는 외부 객체가 있을 때 사용됩니다. @ObservedObject는 ObservableObject 프로토콜을 채택하여 SwiftUI View와 상호작용할 수 있도록 만들어집니다. 📝 Docs @ObservedObject 래퍼는 SwiftUI 뷰와 ObservableObject 객체 간의 연결을 설정하는 데 사용됩니다. ObservableObject 객체가 변경될 때마다 뷰는 알림을 받고 업데이트된 값을 사용하여 다시 렌더링됩니다. 이러한…

May 14, 2023
SwiftUI
(SwiftUI) 데이터 바인딩

SwiftUI에서 데이터 바인딩이 필요한 이유 SwiftUI에서 View는 struct(구조체)형태이다. 따라서 구조체이기에 내부에서 프로퍼티를 변경하는 것이 불가능하다. 다음 코드와 같이 A로 정의된 값을 내부에서 B로 변경하려고 할 때, ‘Cannot assign to property: ‘self’is immutable과 같은 오류가 발생한다. 따라서 이와 같은 문제를 해결하기 위해 를 사용한 데이터 바인딩이 필요하다. 💡 @State A property wrapper type that can read and write a value managed by SwiftUI 사용법 변수 앞에 @State 붙이기만 하면 됨 Property Wrapper : 변화가 생기면 해당 변수의 값을 읽거나 새로 쓸 수 있다. State value 값이 변경되면 뷰는 해당 value의 apperance를 무효화 하고 새롭게 body 값을 계산 State 변수값이 변경되면 view를…

April 27, 2023
SwiftUI
(SwiftUI) 화면전환을 위한 NavigationLink, NavigationStack

💡 NavigationStack A view that displays a root view and enables you to present additional views over the root view. 다른 뷰로 넘어가는 방식 (화면전환의 방식)을 스택처럼 적용한 것 선언 항상 제거되지 않은 가장 최근에 추가된 View를 표시 RootView는 제거할 수 없다. NavigationStack을 사용하기 위해선 NavigationLink와 .navigationDestination 수정자가 필요 NavigationLink = 제어 뷰 (클릭 시 내가 원하는 View를 나오게 하는 역할) navigationDestination(for:destination:) = Destination View를 NavigationLink에서 제시된 Data 타입과 연결해주는 Method 💡 NavigationLink A view that controls a navigation presnetat…

April 03, 2023
SwiftUI
(SwiftUI) View 사이즈 조절하기 by Frame, Padding, Spacer

💡 SwiftUI에서의 View SwiftUI는 AutoLayout과 달리, 본인이 속한 부모뷰와 본인의 콘텐츠에 동시에 영향을 받아 자동으로 Layout이 결정 UIKit에서 프레임을 설정하는 것과 달리, SwiftUI의 수식어는 뷰를 직접 변경하는 것이 아닌, 원래의 뷰를 수식하는 새로운 뷰를 반환 SwiftUI에서 뷰는 View 프로토콜을 따르는 구조체로 선언되고, 그 View 프로토콜을 따르기 위해서는 body 프로퍼티를 가지고 있어야 하며, 그 안에 View가 선언되어야 한다. 사진과 같이 미리보기를 할 수 있는 이유는 BloadUpload뷰에 대한 PreviewProvider가 설정되어 있기 때문 ⭐️ 하나의 body 프로퍼티는 단 1개의 뷰를 반환하도록 구성 다음 코드에서와 같이 두개의 Text를 입력하더라도 위 사진에서처럼 하나의 뷰에 Text 두개가 나타나는 것이 아닌 Preview가 두개 생기는 것을 볼 수 있다. ⭐️ 따라서 새로운 뷰를 추가하기 위해…

April 01, 2023
SwiftUI