apple 216

[SwiftUI] TabView + CustomTabView

TabView + CustomTabView 탭뷰는 그렇게 어렵지 않다. 하지만 커스텀 탭뷰는 탭뷰를 사용하는게 아니므로 각별히 주의하자! ✅ TabView import SwiftUI struct MyTabView : View { var body: some View{ TabView { // 탭뷰를 걸어준다. // 보여질 화면 // Text("1번") // .fontWeight(.black) // .font(.largeTitle) MyView(title: "1번", bgColor: Color.red) // 뷰 .tabItem { // 뷰에 탭 아이템을 건다! Image(systemName: "airplane") Text("1번") } .tag(0) // tag설정 // Text("2번") // .fontWe..

[SwiftUI] GeometryReader

GeometryReader ✅ GeometryReader에 대해서 알아보자. GeometryReader는 쉽게 말해서 디바이스 기기마다 대응하기 위함이다. 음,, 대충 오토 레이아웃이라고 생각하면 좋아! ✅ 코드 import SwiftUI enum Index { // enum으로 처리한다. case one, two, three } struct MyGeometryReaderVStack : View { @State var index: Index = .one // 초기 상태는 one으로 var body: some View{ // 부모뷰의 비율을 사용 가능하다. GeometryReader{ geometry in VStack{ Button(action:{ // 버튼이 클릭되었을때 로직 print("1번이 클릭되었..

[SwiftUI] NavigationView

NavigationView ✅ NavigationView 다른건 없고, navigationView가 중첩되는 문제만 주의하면 된다. 쉽게 말해서 최상단에서 NavigationView를 걸고 다른 childView에는 걸지 않아야 한다. ✅ 코드 import SwiftUI struct MyNavigationView : View { var body: some View{ // NavigationView란 쉽게 말해서 Embed in으로 네비게이션 하는거라고 생각 NavigationView { // ❗️ 최상단에만 이걸 걸어야 함! // Text("MyNavigationView") MyList() .navigationBarTitle("안녕하세요!") // 가운데 타이틀 // .navigationBarTitle(..

[SwiftUI] List (tableView in UIKit)

List (tableView in UIKit) ✅ SwiftUI의 List에 대해서 알아보자. List를 구성하는건 크게 어렵지 않다. ✅ MyList import SwiftUI struct MyList: View { // 다른쪽에서 데이터를 받아올 것이기 때문에 @Binding var isNavigationBarHidden: Bool // 바인딩의 경우에는 생성자 필수! init(isNavigationBarHidden: Binding = .constant(false)) { if #available(iOS 14.0, *){ } else { // 아래 버전에서는 푸터가 있어서 이 코드를 통해서 없애야 한다. UITableView.appearance().tableFooterView = UIView() } U..

[SwiftUI] Alert

Alert ✅ SwiftUI에서 Alert를 사용하는 것을 알아보자. 아주 간단한 내용을 기반으로 커스텀 하는 것은 알아서 해보기! import SwiftUI struct contentView: View { // struct는 class와 다르게 데이터가 고정이라서 변경을 하려면 @state키워드 사용 // mutating과 닮아있다. @State var shouldShowAlert: Bool = false var body: some View { Button( action: { print("확인 버튼이 클릭되었다.") self.shouldShowAlert = true }) { Text("확인") .fontWeight(.bold) .foregroundColor(.white) .padding() .frame..

[SwiftUI] VStack, HStack, ZStack

VStack, HStack, ZStack ✅ 스택뷰에 대해서 알아보자. ✅ VStack import SwiftUI struct MyVstack : View { var body: some View { // VStack에는 기본적인 spacing이 있어서 0으로 해주기 // alignment는 정렬 옵션 VStack(alignment: .trailing, spacing: 0) { // 우측으로 붙이기 위한 3가지 방법! // 공간을 아예 주어서 정렬하기 // Spacer() // opacity(0) 통해서 선을 안보이게 한다. Divider().opacity(0) // 아예 Rectangle 하나 더 만들기 // Rectangle() // .frame(height: 1) // Text("글자") .font(..

[SwiftUI] How to set Image in SwiftUI

How to set Image in SwiftUI ✅ SwiftUI에서 Image를 세팅하는 방법에 대해 알아봅니다. ✅ CircleImageView.swift import SwiftUI struct CircleImageView : View { var body: some View { //Image(systemName: "bolt.circle") // .font(.system(size: 200)) // 시스템 이미지는 font로 크기를 조절함. // .foregroundColor(.yellow) // .shadow(color: .gray, radius: 2, x: 2, y: 10) Image("myImage") .resizable() // 이미지의 크기를 조정해주기 위해서 .scaledToFill() /..

Swift 디자인패턴 Iterator Pattern (반복자 패턴)

Swift 디자인패턴 Iterator Pattern (반복자 패턴) Iterator Pattern은 컬렉션(집합체)에 저장된 요소를 순차적으로 접근하는 방법을 제공하는 행동 디자인 패턴.컬렉션의 내부 구현 방식을 노출하지 내부 요소들은 탐색할 수 있도록 함. 히스토리2022-05-13: 디자인 패턴 스터디 정리2024-11-28: 포스팅 글 재정리 및 조금 더 실용적인 예제 코드로 변경   Iteractor Pattern두 가지 개념으로 구성됨Iterator: 컬렉션의 요소를 하나씩 탐색하는 객체. 주로 next(), hasNext() 같은 메서드를 제공.Iterable: 반복자 객체를 반환하는 makeIterator() 메서드를 제공하여, 컬렉션이 반복 가능하도록 함.이터레이터 패턴 장점컬렉션 내부 ..

Swift 디자인패턴 Adapter Pattern (어댑터 패턴)

Swift 디자인패턴 Adapter Pattern (어댑터 패턴) Adapter Pattern은 서로 호환되지 않는 인터페이스를 가진 클래스들이 함께 동작할 수 있도록 중간 역할을 하는 구조 패턴.기존 코드를 변경하지 않고, 원하는 인터페이스를 갖춘 어댑터를 추가하여 두 시스템을 연결 히스토리2022-05-13: 디자인 패턴 스터디 정리2024-11-28: 포스팅 글 재정리 및 예제 변경 Adapter Pattern어댑터 패턴은 4가지 구성요소로 이루어져 있음클라이언트(Client):특정 인터페이스를 기대하며 동작하는 코드.타겟(Target): 클라이언트가 호출하려는 인터페이스.어댑터(Adapter): 타깃 인터페이스를 구현하여, 실제 서비스를 제공하는 어댑티(Adaptee)를 감싸는 객체.어댑티(Ada..

Swift 디자인패턴 Factory Pattern (팩토리 패턴)

Swift 디자인패턴 Factory Pattern (팩토리 패턴) Factory Pattern은 객체 생성을 캡슐화하여, 클라이언트가 객체 생성 방식에 대해 알 필요 없도록 설계하는 생성 패턴이를 통해 객체 생성 로직을 중앙 집중화하고, 유지보수를 용이하게 함. 히스토리2022-05-08: 디자인 패턴 스터디 정리2024-11-28: 포스팅 글 재정리 및 예제 변경 Factory Pattern팩토리 패턴은 다른 개념으로도 확장 가능단순 팩토리 패턴: 조건에 따라 객체를 생성하는 메서드만 제공 (정식 팩토리 패턴은 아님)팩토리 메서드 (Factory Method) 패턴: 서브클래스에서 객체 생성 과정을 오버라이드하여 생성 로직을 확장추상 팩토리 (Abstract Factory) 패턴: 관련 객체군을 생성하..