728x90 SMALL SwiftUI6 @Binding 은 뭐야? @Binding은 뷰 간 상태(State)를 공유할 때 사용하는 속성 래퍼즉, 어떤 상위 뷰(부모)가 가지고 있는 상태 값을 하위 뷰(자식)에서 읽고, 변경할 수 있도록 연결해주는 역할 🔧 간단한 정의@Binding var isSet: Bool이 코드는 isSet이라는 불리언 값을 외부(보통 부모 뷰)로부터 바인딩 받아서 사용하겠다는 뜻→ 즉, 이 뷰 안에서 isSet 값을 변경하면 부모 뷰의 상태 값도 함께 변경 @State = 뷰 내부에서 직접 상태를 소유하고 변경@Binding = 다른 뷰(보통 부모 뷰)의 상태를 참조해서 읽고 쓰기 가능 1. 부모 뷰struct ParentView: View { @State private var isFavorite = false var body:.. 2025. 6. 5. @Environment(ModelData.self) var modelData 에서 @Environment는 뭐야? @Environment(ModelData.self) var modelData는 Swift의 새로운 Observation 프레임워크에서 도입된 방식으로,앱의 전역(shared) 상태를 SwiftUI 뷰에서 주입받아 사용하는 방법 🔍 @Environment(ModelData.self) var modelData의 의미이 코드는 ModelData라는 타입의 객체를 환경(Environment)에서 자동으로 주입받는다는 뜻즉, SwiftUI는 앱의 상위 어딘가에 있는 ModelData 인스턴스를 찾아서 이 뷰에 연결 🧠 쉽게 말하면:ModelData는 앱 전체에서 공통으로 사용하는 데이터 모델이 데이터를 뷰 안에서 쓰고 싶을 때, 직접 생성하거나 전달하지 않아도 됨대신 @Environment(ModelData... 2025. 6. 5. @Observable 이 뭐야? @Observable은 Swift의 SwiftData(또는 Observation 프레임워크)에서 도입된 새로운 속성 래퍼로,클래스가 관찰 가능(observable)하도록 만들어주는 역할즉, 해당 클래스의 프로퍼티가 바뀌면 자동으로 뷰에 반영될 수 있게 해주는 도구 ✅ @Observable의 의미@Observableclass ModelData { var landmarks: [Landmark] = load("landmarkData.json")} 이 코드는 ModelData 클래스가 SwiftUI 뷰에서 관찰될 수 있게 한다는 뜻즉, landmarks 배열이 변경되면 이를 사용하는 SwiftUI 뷰가 자동으로 업데이트 🔄 @Observable과 @ObservedObject, @Published의 차이기.. 2025. 6. 5. @State란? ✅ SwiftUI에서 @State는 뷰의 상태를 저장하고 추적하는 데 사용되는 속성 래퍼 ✅ @State란?SwiftUI는 뷰가 상태(state)에 따라 자동으로 다시 그려지는 선언형 UI 프레임워크@State를 붙이면, 값이 변경될 때 해당 뷰를 자동으로 다시 렌더링@State private var showFavoritesOnly = false 이 코드는 showFavoritesOnly라는 Bool 상태 변수를 선언한 것이고, 기본값은 false나중에 사용자가 토글을 조작하거나 버튼을 누르면 이 값을 true 또는 false로 바꿀 수 있고, SwiftUI는 그 변경을 감지하여 관련된 뷰를 자동으로 다시 그림 💡 왜 필요한가요?SwiftUI에서는 상태가 바뀔 때마다 뷰 전체를 다시 그리기 때문에,이 .. 2025. 6. 5. Hashable, Codable 뭐여? struct Landmark: Hashable, Codable { var id: Int var name: String var park: String var state: String var description: String } 🔹 HashableHashable 프로토콜은 객체를 고유하게 식별할 수 있도록 해주는 역할 ✅ 언제 쓰이나요?Set 또는 Dictionary의 key로 사용될 때UICollectionViewDiffableDataSource나 UITableViewDiffableDataSource의 ItemIdentifierType으로 사용될 때let a = Landmark(id: 1, name: "A", park: "", state: "", description: "").. 2025. 6. 4. Spacer() SwiftUI에서 Spacer() 는 기본적으로 남아있는 모든 공간을 차지하도록 동작합니다. 하지만 필요에 따라 임의로 크기를 조정할 수도 있습니다. 1. 기본 동작 (정해진 값 없음):Spacer()는 부모 뷰가 가진 남아있는 공간을 최대한 확장합니다.예를 들어, HStack이나 VStack 내에서 다른 뷰 사이에 Spacer()를 넣으면, 그 뷰들 사이의 공간을 자동으로 나눕니다. 아래 코드는 두 텍스트 사이에 가능한 모든 공간을 차지하는 Spacer를 배치합니다.HStack { Text("Left") Spacer() Text("Right")} 2. 크기를 임의로 지정 (frame 사용):Spacer의 크기를 직접 조정하려면 **.frame()**을 사용할 수 있습니다..frame(h.. 2024. 12. 22. 이전 1 다음 728x90 LIST