Starbucks Caramel Frappuccino
본문 바로가기
  • 그래 그렇게 조금씩

SwiftUI/SwiftUI(Advanced)14

13. Dependency Injection vs Singleton / 의존성 주입 🦁Dependency Injection vs Singleton🦁 지난 시간에 공부한 프로토콜의 개념을 활용해서 의존성 주입을 연습해보자. 의존성 주입을 하는 이유는 코드의 유연성(확장 용이), 테스트 용이성'에 있다고 볼 수 있다. 아래는 이전에 공부했던 참고내용 https://toughie-ios.tistory.com/242 의존성 주입 (DI, Dependency Injection) 한참 전에 의존성 주입에 대해 공부하며 포스팅을 했었는데.. 오늘 다시 공부하면서 훨씬 많이 이해한 거 같아서 다시 정리하기 위함. 의존성 주입. DI라고 하는데.. 말이 참 어렵다. 의존성? (Depen toughie-ios.tistory.com 먼저 간단하게 JSON 파싱을 통해 데이터를 받아오는 상황을 만들어보자. .. 2023. 6. 27.
12. Protocol 프로토콜 🦁Protocol 프로토콜🦁 코드를 치다보면 거의 매번 마주치는 프로토콜. 프로토콜이 무엇이고 왜 사용하는 것인가?에 대해 살펴보자. 프로토콜은 필수 요구조건들을 나열해둔 것. 프로토콜은 자격증과 같다. 왜? 요구조건들을 만족하면 새로운 속성,기능을 얻을 수 있으니까. 프로토콜은 코드에 '재사용성'과 '유연성'을 부여한다. 프로토콜은 특정은 추상화 과정에서 사용된다. 이런 저런 중복 코드가 많은 경우에 해당 코드들을 쏙 뽑아 프로토콜로 추상화 하면 더 유연하고 깔끔한 코드를 만들 수 있다. 프로토콜은 '요구사항'을 정의하고, 이 요구사항의 구현은 프로토콜을 채택한 타입에서 진행한다.(프로토콜 준수) 프로토콜에는 프로퍼티, 메서드, 생성자, 서브스크립트 등 여러 멤버 요구사항을 정의할 수 있다. (정의만 .. 2023. 6. 27.
11. UIViewControllerRepresentable / UIImagePicker 🦁UIViewControllerRepresentable / UIImagePicker🦁 지난 시간에 공부한 UIViewRepresentable이 UIView를 SwiftUI 뷰로 통합할 수 있게 하는 프로토콜이라면, UIViewControllerRepresentable은 UIViewController를 SwiftUI 뷰로 통합하기 위한 프로토콜이다. 뷰 컨트롤러를 생성하고, 뷰 컨트롤러를 업데이트하는 메서드를 구현해야한다. https://developer.apple.com/documentation/swiftui/uiviewcontrollerrepresentable UIViewControllerRepresentable | Apple Developer Documentation A view that repres.. 2023. 6. 26.
10. UIViewRepresentable / Custom TextField 🦁UIViewRepresentable / Custom TextField🦁 SwiftUI가 등장하기 이전에는 UIKit을 활용했기 때문에(물론 지금도 활발히 사용되고 있지만) 커스텀이나 다양한 기능면에서는 UIKit이 훨씬 자유로운 편이다. SwiftUI의 TextField만 봐도 placeholder에 대한 컬러변경조차 하지 못하니.. 이와 같이 세부적인 커스텀이 필요한 것들은 UIKit 컴포넌트를 가져와서 활용할 수 있다. 이를 가능하게 하는 것이 바로 UIViewRepresentalble 프로토콜이다. https://developer.apple.com/documentation/swiftui/uiviewrepresentable UIViewRepresentable | Apple Developer Docu.. 2023. 6. 25.
9. Custom NavigationView/Link 🦁Custom NavigationView/Link🦁 화면 간 전환에 아주 유용하고 강력한 기능인 네비게이션뷰/링크를 커스텀 해보자. 기본 네비게이션뷰 같은 경우 특히 네비게이션 타이틀,네비게이션바 부분의 커스텀에는 많은 제약이 있다. 네비게이션의 동작 원리에 맞게 아예 처음부터 재구성하기보다는, 기존 네비게이션을 활용하면서 필요한 부분만 커스텀 해서 사용한다고 보는 편이 맞겠다. 먼저 기본 네비게이션 뷰 사용법은 아래와 같다. NavigationView { ZStack { Color.yellow.ignoresSafeArea() NavigationLink { Text("Destination") .navigationTitle("Title2") .navigationBarBackButtonHidden(false.. 2023. 6. 25.
8. Custom TabView / TabBar 커스텀 탭뷰/탭바 🦁Custom TabView / TabBar🦁 탭뷰/ 탭바는 매우 많은 앱에서 사용하는 기능이다. 기본 탭뷰는 아래와 같은 형태이다. 하지만 기본 컴포넌트인 만큼 커스텀에 제약이 많다. 따라서 기본 탭뷰와 가장 유사하게 동작하지만, 많은 부분을 커스텀할 수 있는 탭뷰를 구현해 보자. TabView(selection: $selection) { Color.pink .tabItem { Image(systemName: "house") Text("home") } Color.green .tabItem { Image(systemName: "tree") Text("tree") } Color.blue .tabItem { Image(systemName: "drop.circle") Text("water") } } //Tab.. 2023. 6. 24.