목록SwiftUI (15)
Jupyo's Daily Story
GeometryReader는 SwiftUI에서 뷰의 크기와 위치에 대한 정보를 제공하는 컨테이너 뷰입니다. 뷰 계층 내에서 자신의 크기와 부모 뷰의 크기를 기반으로 레이아웃을 동적으로 조정하고 싶을 때 사용됩니다. 뷰의 위치, 크기, 좌표 등의 정보를 활용해 반응형 레이아웃을 만들 수 있습니다. GeometryReader란?GeometryReader는 SwiftUI에서 뷰의 프레임과 위치를 계산하기 위해 사용되는 뷰입니다.이 컨테이너 뷰 안에서 자식 뷰는 부모 뷰의 레이아웃 정보를 기반으로 크기와 위치를 조정할 수 있습니다.주로 동적 레이아웃이나 반응형 디자인을 구현할 때 유용합니다. 사용 이유뷰의 위치와 크기를 계산하고, 그 값을 이용해 유연한 레이아웃을 설계할 수 있습니다.디바이스 크기에 맞춘 적응형..
@Environment는 SwiftUI에서 공통적으로 사용되는 값을 공유하고 관리하기 위한 프로퍼티 래퍼입니다. 전역적으로 값을 전달하는 방법을 제공하며, 뷰 계층 구조 전체에서 상위 뷰가 설정한 환경 값을 하위 뷰가 접근하고 사용할 수 있습니다. @Environment란?@Environment는 SwiftUI에서 뷰 계층 구조 전체에 걸쳐 공유할 수 있는 전역 값을 읽고, 사용하는 프로퍼티 래퍼입니다.상위 뷰에서 설정한 환경 값을 하위 뷰에서 간단하게 사용할 수 있습니다.주로 앱의 설정이나 테마, 시스템 환경 정보 등과 같은 전역적인 데이터를 공유할 때 사용됩니다. 사용 이유뷰 간에 공통적으로 사용되는 값을 하위 뷰에 쉽게 전달하기 위해 사용합니다.데이터를 일일이 직접 전달하지 않고, 필요한 시점에 뷰..
@Published는 SwiftUI와 Combine에서 데이터 변경을 자동으로 알릴 수 있게 하는 프로퍼티 래퍼입니다. 이 래퍼를 사용하면 클래스에서 상태를 관리하고, 그 상태가 변할 때 자동으로 뷰가 업데이트됩니다. @Published는 ObservableObject와 함께 사용되며, 상태의 변화를 구독자에게 전달하는 역할을 합니다. @Published란?@Published는 SwiftUI에서 프로퍼티의 값이 변경될 때 이를 자동으로 구독자에게 알리는 프로퍼티 래퍼입니다.주로 ObservableObject를 준수하는 클래스에서 사용되며, 뷰나 다른 객체가 해당 값의 변화를 감지할 수 있습니다. 사용 이유뷰모델이나 데이터 모델에서 상태 변화를 쉽게 관리하고, 자동으로 UI를 업데이트하기 위해 사용됩니다...
@ObservedObject는 외부에서 전달된 객체를 감시하고, 해당 객체의 상태가 변경될 때 자동으로 UI를 업데이트하는 데 사용되는 SwiftUI의 중요한 프로퍼티 래퍼입니다. ObservableObject와 함께 사용되며, 클래스 기반 상태를 감시할 때 필수적인 역할을 합니다. ObservedObject란?ObservedObject는 SwiftUI에서 외부에서 전달받은 ObservableObject를 감시하는 프로퍼티 래퍼입니다.뷰가 외부 객체의 상태를 감시하고, 객체의 데이터가 변경될 때 자동으로 UI가 업데이트됩니다.뷰가 객체를 생성하지 않고, 외부에서 전달받아 감시하는 상황에서 사용됩니다. 사용 이유외부 객체의 상태를 감시하고, 해당 상태가 변할 때 자동으로 UI를 갱신하기 위해 사용합니다.객..
@Binding은 SwiftUI에서 부모 뷰와 자식 뷰 간에 상태를 공유할 수 있도록 도와주는 프로퍼티 래퍼입니다. @State가 뷰 내부에서 상태를 관리한다면, @Binding은 이 상태를 다른 뷰로 전달하고 공유할 수 있도록 합니다. 즉, @Binding을 사용하면 자식 뷰가 부모 뷰의 상태를 직접 수정할 수 있습니다.기본 개념상태 전달: @Binding은 부모 뷰에서 관리되는 @State 변수의 참조를 자식 뷰에 전달합니다. 이를 통해 자식 뷰는 해당 상태를 읽고 수정할 수 있으며, 부모 뷰도 이 변경 사항을 감지하여 UI를 업데이트할 수 있습니다.양방향 데이터 흐름: @Binding은 데이터가 부모에서 자식으로 전달되는 것뿐만 아니라, 자식에서 부모로도 영향을 미치는 양방향 데이터 바인딩을 가능하..
@StateObject 는 객체의 상태를 관리하고, 뷰가 그 상태를 감시하며 자동으로 UI를 업데이트하는 데 사용되는 중요한 프로퍼티 래퍼입니다. 특히 새로운 객체를 생성하고 해당 객체의 수명 주기를 뷰가 소유할 때 사용됩니다. @StateObject 는 SwiftUI가 객체의 생명 주기를 관리할 수 있게 해주며, 뷰가 다시 랜더링될 때 객체가 재생성되지 않도록 합니다. @StateObject란 무엇인가?@StateObject 는 SwiftUI에서 클래스 타입의 상태를 관리할 때 사용하는 프로퍼티 래퍼입니다. 이는 주로 ObservedObject 프로토콜을 채택한 클래스를 감시하며, 해당 객체의 상태가 변경될 때 UI를 자동으로 업데이트하는 역할을 합니다. 특징뷰가 객체를 소유하고 그 객체의 상태를 관리..
ObservableObject는 SwiftUI에서 클래스 기반 데이터를 관리하고, 해당 데이터가 변경될 때 자동으로 UI를 업데이트하는 중요한 프로토콜입니다. ObservableObject를 사용하면 SwiftUI의 반응형 구조에서 데이터를 효율적으로 관리할 수 있습니다. ObservableObject란?ObservableObject는 SwiftUI의 데이터 모델이 상태를 관리하고, 그 상태의 변화를 감시할 수 있게 해주는 프로토콜입니다.데이터가 변경될 때 자동으로 UI가 업데이트되도록 하기 위해 사용됩니다.보통 클래스 타입의 데이터 모델에서 사용되며, 이 모델을 감시하는 뷰가 자동으로 리렌더링됩니다. 사용 이유ObservableObject는 상태가 자주 변경되는 클래스 기반 데이터를 관리할 때 유용합니..
@State는 SwiftUI에서 상태 관리를 위해 사용하는 프로퍼티 래퍼입니다. SwiftUI는 선언적 UI 프레임워크로, UI를 상태 기반으로 구성합니다. @State는 이 상태를 관리하는 데 중요한 역할을 합니다. 자세히 살펴보면:기본 개념상태(State): 앱의 UI와 상호작용을 통해 변할 수 있는 데이터입니다. @State를 사용하면 이 데이터를 관리하고, 데이터가 변경될 때 UI가 자동으로 업데이트됩니다.프로퍼티 래퍼(Property Wrapper): @State는 프로퍼티 래퍼로, 변수에 상태 관리를 부여합니다. 이 래퍼는 SwiftUI가 해당 변수를 감시하고, 값이 변경될 때 UI를 다시 렌더링하도록 돕습니다.사용 방법선언: @State는 struct 내부에서 선언됩니다. 일반적으로 View..
@EnvironmentObject는 SwiftUI에서 앱의 여러 뷰들 사이에서 공통 상태를 공유하고, 쉽게 전달할 수 있도록 도와주는 프로퍼티 래퍼입니다. 이는 주로 전역적인 상태나 공유 상태를 관리할 때 사용됩니다.@EnvironmentObject는 부모 뷰에서 자식 뷰로 명시적으로 상태를 전달할 필요 없이, 뷰 계층 전체에서 사용할 수 있게 해줍니다. 기본 개념공유 상태 관리: @EnvironmentObject는 하나의 객체를 여러 뷰에서 참조하고, 그 상태를 쉽게 변경하거나 접근할 수 있게 합니다. 이 객체는 주로 ObservableObject 프로토콜을 채택한 클래스로 만들어집니다.자동 전달: @EnvironmentObject는 뷰 간의 계층 구조에서 자동으로 전달되기 때문에, 명시적으로 뷰 간에..
※ 지극히 개인적인 경험을 토대로 적어둔 것입니다. 틀린 부분에 대한 지적은 언제나 환영합니다. SwiftUI에서는 뷰와 뷰 사이에 거리를 줄 때 Spacing 또는 Spacer 을 이용한다 Spacing 일반적으로 VStack, HStack, LazyVGrid, LazyHGrid 등에 사용된다. 우선 기본적인 VStack 을 보자면 아래와 같다. VStack { Text("TEXT-1") Text("TEXT-2") } 위 이미지처럼 텍스트 뷰가 가운데에 나란히 붙어서 생성되었다. 이 때 VStack 내부의 항목간에 똑같은 간격을 주기 위한 것이 Spacing 이다. VStack(spacing: 16) { Text("TEXT-1") Text("TEXT-2") Text("TEXT-3") } 그렇다면, 항목..