apple 216

Swift 디자인패턴 State Pattern (상태 패턴)

Swift 디자인패턴 State Pattern (상태 패턴) State Pattern은 객체의 내부 상태에 따라 동작이 변경되도록 설계하는 행동 패턴.  히스토리2022-05-30: 디자인 패턴 스터디 정리2024-11-27: 포스팅 글 재정리 및 조금 더 실용적인 예제 코드로 변경  State Pattern상태 패턴을 사용하면 객체의 상태를 별도의 상태 클래스로 추상화하고, 객체는 자신의 상태를 바꾸면서 동작을 동적으로 변경할 수 있음Context: 상태를 관리하고, 현재 상태에 따라 행동을 위임하는 클래스State: 공통 인터페이스 또는 추상 클래스 정의 모든 Concrete 클래스는 해당 인터페이스 구현Concrete State: State 인터페이스를 구현한 클래스로 상태별 고유 동작 저의상태..

Swift 디자인패턴 Prototype Pattern (프로토타입 패턴)

Swift 디자인패턴 Prototype Pattern (프로토타입 패턴) Prototype 패턴은 객체를 새로 생성하는 대신, 기존 객체를 복사하여 새로운 객체를 만드는 생성 패턴.  히스토리2022-05-28: 디자인 패턴 스터디 정리2024-11-27: 포스팅 글 재정리 및 조금 더 실용적인 예제 코드로 변경Prototype Pattern객체를 빠르게 생성하거나 런타임에 객체의 구조를 동적으로 변경해야 할 때 유용 Prototype Pattern은 일반적으로 3개지 개념으로 구성됨Prototype Interface: 객체를 복사할 수 있는 인터페이스(clone) 정의Concrete Prototype: Prototype Interface를 구현하며, 복사 가능한 객체를 생성Client: Prototy..

[SwiftUI] LazyVGrid

LazyVGrid SwiftUI에 대해서 알아가고 있는데, UIKit에 비해서는 아직 어렵다.UIKit이라면 금방 했을탠데, 아직까지는 숙련도가 낮은 것 같아서 어렵다. 적응하면 쉬워지겠지 iOS 14 혹은 15를 타겟으로 개발하고 있는데 SwiftUI가 80프로까지는 금방 만드는데, 결국 UIKit을 사용해야하는 시점에서는 점점 손이 많이가기 시작한다.SwiftUI가 시간이 흐르면서 더 발전하겠지 ✅ 샘플코드import SwiftUIenum LayoutType: CaseIterable { case table, grid, multiple var columns: [GridItem] { switch self { case .table: return..

[SwiftUI] Picker, segmentedStyle (feat. enum CaseIterable)

Picker, segmentedStyle (feat. enum CaseIterable) (feat. enum CaseIterable)의 경우에는 따로 enum에 대해서 사용하는 방식을 포스팅 할 예정이지만, 그 전에 어떻게 사용하는지 간략하게 사용법? 정도는 나와있어서 참고해보면 좋다. 이번에는 코드를 한번 보자! ✅ Picker, segmentedStyle에 대해서 알아보자. import SwiftUI struct ContentView: View { @State private var selectionValue = 0 let myColorArray = ["레드", "그린", "블루"] func changeColor(index: Int) -> Color { switch index { case 0: retu..

SwiftUI Toast, popup

SwiftUI Toast, popup 오픈소스를 활용해서, 팝업 및 토스트 UI를 처리하는 부분을 기술.직접 구현해도 크게 어렵지 않으나, 개인 앱 개발 시 오픈소스를 활용함으로써 본질에 더 집중할 수 있다는 이점. 히스토리2022.05.23. 15:36초기 포스팅 PopupView 2점대 버전2024.11.18. 02:23PopupView 예제 개선 및 3점대 버전으로 재정리주의: 해당 오픈소스를 확장 개발하기 위해 PR 및 이슈를 검토하던 중, 메인테이너 분이 바쁘셔서 문제점을 다른 작업자의 PR을 고스란히 넣어주고 있음하지만, 개인 앱 개발에서 크리티컬한 문제가 되지 않아서 재정리 오픈소스 링크https://github.com/exyte/PopupView GitHub - exyte/PopupView..

[SwiftUI] TextField, SecureField

TextField, SecureField ✅ UIKit에서는 익숙했던 것들인데, SwiftUI에서는 낯설다. 여기서 주의할 점은 TextField의 text는 Binding이라서 @State와 $에 주의하자. TextField는 우리가 기존에 알던 TextField와 같다. SecureField는 password를 입력할 때, 글자가 보이지 않게끔 검은색 원으로 숨겨주는 필드이다. 코드가 무척 간단하니까 쓱 읽어보자! ✅ 코드 import SwiftUI struct ContentView: View { @State private var username: String = "" @State private var password: String = "" var body: some View { VStack(spac..

[SwiftUI] ButtonStyle

ButtonStyle ✅ 버튼 스타일에 대해서 알아보자 이건 진짜 어렵지가 않다. 정말정말 E A S Y 해 ! Configuration은 상속받아 들어오는 것의 상태를 받아서 쓰는것 ✅ MyBlurButtonStyle import SwiftUI struct MyBlurButtonStyle: ButtonStyle { var color : Color // Configuration 위에서 상속받는 속성 그대로 사용할 수 있게 해줌 func makeBody(configuration: Configuration) -> some View { configuration .label .font(.system(size: 20)) .foregroundColor(Color.white) .padding() .background..

[SwiftUI] QRcodeReader

QRcodeReader ✅ QRcodeReader를 알아보자. 코드는 어렵지 않다. 눈여겨 볼 점은 하나의 파일에서 여러개의 뷰를 생성하는 것을 볼 수 있겠다 🟠 아래는 오픈소스 !_! https://github.com/twostraws/CodeScanner GitHub - twostraws/CodeScanner: A SwiftUI view that is able to scan barcodes, QR codes, and more, and send back what was found. A SwiftUI view that is able to scan barcodes, QR codes, and more, and send back what was found. - GitHub - twostraws/CodeScan..

[SwiftUI 3.0] State/ Binding / EnvironmentObject

State/ Binding / EnvironmentObject ✅ 오늘은 이 세가지에 대해서 알아보자. @State: 값이 변경되었을 때, 화면을 다시 보여주어야 할 때. @Binding: state같은 친구들을 view - view 간에 공유해야 하는 경우. @EnvironmentObject: parent로 child(하위) view에 공유해야 하는 경우. 우선 State와 Binding에 대해서 이해해보자. ✅ 예시 코드 struct FirstView: View { @State var appTitle = tabIndex.first.rawValue @State var count = 0 enum tabIndex: String { case first = "1번뷰 입니다." case second = "2번뷰..