Dev-iOS/SwiftUI 6

[SwiftUI] 프로퍼티 래퍼 (Property Wrapper)

프로퍼티 래퍼란?프로퍼티 래퍼는 Swift에서 특정한 방식으로 프로퍼티를 동작시키는 구조를 정의하는 기능입니다.SwiftUI에서는 이 프로퍼티 래퍼를 통해 다양한 동작을 캡슐화하고 코드를 깔끔하게 유지하는데 도움이 됩니다. @State, @Binding, @ObservedObject, @EnvironmentObject 등이 대표적인 예입니다. 왜 프로퍼티 래퍼를 사용하는가?프로퍼티 래퍼를 사용하면 복잡한 로직을 래퍼 내부에 숨기고, 코드의 가독성을 향상시키며, 일관된 방식으로 특정 기능을 제공할 수 있습니다. 예를 들어, SwiftUI의 @State 프로퍼티 래퍼를 사용하면, UI의 상태를 안전하게 관리하고 UI가 상태의 변화를 자동으로 반영할 수 있게 만듭니다.struct ContentView: Vie..

Dev-iOS/SwiftUI 2024.09.09

[SwiftUI] QR 코드 만들기

1. QR 코드 생성 뷰 만들기먼저, QRCodeView라는 뷰를 만들고 사용자가 입력한 텍스트를 QR 코드로 변환하는 방법을 살펴보겠습니다. QR 코드를 생성하기 위해 CoreImage 프레임워크를 사용하며, CIFilter를 활용해 QR 코드를 생성합니다.1.1 기본 뷰 구조다음은 기본 뷰 구조입니다. QRCodeView는 사용자가 텍스트를 입력하고, 해당 텍스트를 QR 코드로 변환하여 화면에 보여줍니다.import SwiftUIimport CoreImage.CIFilterBuiltinsstruct QRCodeView: View { @State private var text: String = "" var body: some View { VStack { Tex..

Dev-iOS/SwiftUI 2024.05.29

[SwiftUI] @State 값 변경 감시하기

기존에는 Toggle, Text Filed, Picker와 같은 기본 제공하는 View에서 Binding 값들이 변경되는 것을 탐지 할 수 없었다. iOS 14에서는 다음과 같은 함수를 제공해주고 있어서 이를 활용하면 된다. @State private var isOn = false var body: some View { Toggle("제목", isOn: $isOn) .onChange(of: isOn) { value in print("\(value)") } } iOS 13에서는 onChange 함수가 없기 때문에 Binding 을 확장해서 사용하면 된다. extension Binding { func didSet(execute: @escaping (Value) -> Void) -> Binding { retu..

Dev-iOS/SwiftUI 2023.07.05