일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- calendar
- segue
- Git
- 고차함수
- 화면전환
- PushNotification
- Refresh
- error
- viewlifecycle
- http
- Animation
- array
- NotificationCenter
- SWIFTUI
- mvvm
- Switch
- Observer
- struct
- singleton
- class
- list
- self
- CoreImage
- apns
- 글또
- escaping
- uikit
- IOS
- ScrollView
- SWIFT
- Today
- Total
목록SWIFTUI (30)
seong_hye, the developer
📘DispatchGroupGCD(Grand Central Dispath)의 기능 중 하나로, 여러 비동기 작업들을 그룹으로 묶어서전부 끝났을 때를 감지하거나 동기적으로 기다렸다가 다음 코드르 실행할 때 사용비동기 작업들의 완료를 추적하고 조율하는 데 사용됨(각 작업이 언제 시작하고 완료되는지 추적하여 모든 작업이 완료된 시점을 감지할 수 있음) 🔹기능- 여러 개의 비동기 작업(큐에 올라가는 블록)을 그룹핑- 모든 작업이 끝났ㅇ르 떄 알림(Notify)를 받거라, 동시 대기(Wait) 가능- 네트워크 요청, 파일 I/O, 연산 등 여러 작업을 동시에 처리하고 결과를 합쳐야 할 때 유용 🔹주요 메서드enter() / leave()그룹에 "작업 시작" 알림, 카운터를 증가시킴 ~> enter()그룹에 "..

📘 이미지 명도와 채도 조절 🔹 주요 필터CIColorControls이미지의 색상 속성을 조절할 수 있는 가장 기본적이고 유용한 필터kCIInputBrightnessKey: 명도 조절 ( -1.0 (어두움) ~ 1.0 (밝음), 기본값: 0.0 )kCIInputSaturationKey: 채도 조절 ( 0.0 (흑백) ~ 2.0 (더 진한 색감), 기본값: 1.0)kCIInputContrastKey: 대비 조절🔹 예시 코드 - SwiftUIimport CoreImageimport CoreImage.CIFilterBuiltinsstruct ContextView: View { // 원본 이미지 로드 @State private var originalImage = UIImage(named: "ex..

📘 Path벡터 그래픽 기반 2D 도형을 정의하는 구조체직접 좌표를 찍고 연결해서 원하는 도형을 만들 수 있음🔹 기본 정의struct Path { var elements: [Path.Element] // 선, 곡선, 이동 등으로 이루어진 요소}🔹 명령어 🔍 시작 / 닫기함수설명 move(to: CGPoint) 경로의 시작점을 지정 (펜을 들어서 새 좌표로 이동) closeSubpath() 현재 경로를 닫음 (마지막 점 -> 시작점 자동 연결) 🔍 직선함수설명 addLine(to: CGPoint) 현재 위치에서 지정한 점까지 직선 추가addLines(_ points: [CGPoint]) 현재 위치에서 여러 점들을 차례로 직선으로 연결 addRect(CGRect) 사각형 추가 addRects([CG..

📘 이미지(사진) 권한 설정iOS에서는 앱에 사진 창 또는 카메라를 사용하려고 할 때 권한 창을 통해 사용자의 동의를 얻어야만 한다권한 창을 띄우고 사용하는 방법에 대해 알아보려 한다 🔹 Info.plist에 권한 문구 추가 / Info 설정 창에서 권한 추가➡️ Info.plist에 사용될 키키 이름설명NSPhotoLibraryUsageDescription포토 라이브러리 읽기 / 저장 권한 요청 시 표시NSCameraUsageDescription카메라 사용 시 표시NSPhotoLibraryAddUsageDescription사진 라이브러리에 저장만 하는 경우 ➡️ Info 설정 창Info.plist가 아닌 Targets > Info 창에서 권한을 추가하는 방법🔹 권한 요청 및 상태 확인Photos ..

📘 matchedGeometryEffect두 개 이상의 뷰를 같은 것으로 인식시켜서 레이아웃이 바뀔 떄 자연스럽게 이어지는 애니메이션을 만들어주는 도구히어로 애니메이션 (Hero Animation) 이라고 불림 🔹개념SwiftUI는 상태 변경 시 View를 새로 다시 그림-> 일반적으로는 기본 뷰가 사라지고, 새로운 뷰가 나타나는 전환이 일어남matchedGeometryEffect(id:in:)을 사용하면, 두 뷰를 같은 ID로 묶어서 SwiftUI가 "같은 요소"라고 인식SwiftUI는 위치, 크기, 모양, 클리핑, 코너 반경 등을 자동으로 보간해줌🔹문법.matchedGeometryEffect(id: "sharedID", id: namespace)id: 같은 그룹 안에서 고유하게 뷰를 매칭시킬 식..
📌 Ambiguous use of toolbar 📌보통 SwiftUI의 .toolbar 수정자 (오버로드가 여러 개)와 내 코드/ 프레임워크의 이름 충돌 또는 모호한 클로저 형태 때문에 생김 ✅ 옳은 toolbar 사용 방법.toolbar {... } 안에 무엇을 넣는지에 따라 여러 오버로드가 매칭될 수 있음항상 배치와 래퍼 타입을 명시하는 것이 필요 ➡️ 단일 버튼일 경우NavigationStack { Text("test") .toolbar { ToolbarItem(placement: .navigationBarTrailing) { Button("Save") {...} } }} ➡️ 여러 버튼일 경우.toolbar { Toolbar..

📘 Transition뷰의 존재 유무의 변화를 애니메이션뷰를 이동할 때의 개념보다는 뷰를 보여지게 하거나 사라지게 하는 애니메이션의 개념.transition(_:)으로 선언하여 사용 가능들어가는 인수는 AnyTransition트랜지션이 실행되려면 상태 변경을 애니메이션으로 감싸야 함withAnimation { ... } 또는 .animation🔍 AnyTransition.opacity페이드 인 / 아웃.scale확대 / 축소로 등장 / 퇴장.move(edge: .top/.bottom/.leading/.trailing)가장자리에서 슬라이드.slide부모의 leading -> trailing로 슬라이드 (언어 방향성 영향).identity트랜지션 없음 (디버그, 조건부 조합에 사용)🔹결합 및 비대칭 기..

📘자동 업데이트새로운 버전이 있을 때 사용자에게 알리고 업데이트를 유도하는 기능에 대해 정리해보려 함 🔹기본 흐름1. 현재 앱 버전 확인Bundle.main.infoDictionary를 통해 현재 버전 추출 2. 서버 / API에서 최신 버전확인App Sotre API를 통해 버전 정보 확인 3. 버전 비교현재 사용자 어플 버전(1번 값)과 앱 스토어 버전(2번 값)을 비교 4. 사용자에게 업데이트 유도버전 비교(3번 값)가 다를 경우 앱스토어로 이동하도록 유도 🔹사용자가 사용중인 현재 버전 가져오기let current = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String else { return } 🔹서버(App Store..