분류 전체보기
-
SwiftUI TCA 파일 첨부 - 문서 파일 업로드, 다운로드, 저장 기능개발/Swift 2025. 6. 20. 09:36
https://inf.run/iDaq4 SwiftUI + TCA: 실전 프로젝트로 완성하는 차세대 iOS 아키텍처 강의 | 덤벨로퍼 - 인프런덤벨로퍼 | 복잡한 SwiftUI 상태 관리, TCA (The Composable Architecture)로 깔끔하고 견고한 앱을 만드세요. 실전 프로젝트 예제로 핵심만 빠르게 배웁니다. , SwiftUI + TCA: 실전 프로젝트로 완성하는 차세대www.inflearn.com SwiftUI TCA 파일 첨부 - 업로드, 다운로드, 저장 기능이 글에서는 SwiftUI TCA 환경에서 파일 첨부 및 관리 기능을 구현하는 포괄적인 방법을 설명합니다. 사용자 친화적인 파일 첨부부터 서버 통신, 그리고 기기 내 저장까지 모든 과정을 상세히 다룹니다.1. 파일 불러오기 (I..
-
SwiftData 기본 사용법 Model, ModelContext, Query개발/Swift 2025. 5. 8. 09:03
이번 글에서는 SwiftData의 핵심 요소인 Model, ModelContext, Query의 기본 사용법을 자세히 다룹니다. SwiftData를 활용하여 효율적인 데이터 관리를 시작해 보세요! -------------------------------------------------------------------------------- 엔티티 정의 (Model) SwiftData에서 데이터를 저장하기 위해서는 먼저 엔티티를 정의해야 합니다. @Model 매크로를 사용하여 쉽게 데이터 모델을 생성할 수 있습니다. Identifiable 프로토콜을 채택하는 것이 일반적입니다.@Model final class User: Identifiable { var name: String var email..
-
SwiftUI TextEditor 자동 스크롤 버그 오류 해결 (커서 문제)개발/Swift 2025. 4. 18. 17:20
💬 문제 상황: 내 마음대로 움직이는 스크롤앱에서 긴 글을 작성하거나 수정하는 기능을 만들 때, 우리는 보통 TextEditor를 사용하고 내용이 길어지면 당연히 ScrollView로 감싸줍니다. 하지만 바로 이 지점에서 문제가 발생합니다.어떤 문제인가요?TextEditor에 텍스트가 화면을 넘어갈 정도로 길어집니다.수정을 위해 TextEditor의 윗부분을 터치(focus)합니다.분명히 위쪽을 터치했는데, 스크롤이 제멋대로 맨 아래로 쭉 내려가 버립니다.또 텍스트 입력시 스크롤이 되돌아 가지도 않고마지막줄 줄 넘김에도 스크롤이 커서를 따라가지 않는 문제도 있음아래는 바로 그 문제의 상황을 재현한 코드입니다.// MARK: 문제가 발생하는 코드struct ContentView: View { ..
-
SwiftUI TextEditor 오류 - 긴 text 내용이 minHeight에 잘리는 문제 (onAppear, task)개발/Swift 2025. 4. 18. 17:10
의도한 동작은 최소 160의 높이를 가지고 내용이 길수록 TextEditor도 늘어나야 함 TextEditor(text: $store.content.sending(\\.setContent)) .focused($focusedField, equals: .content) .frame(minHeight: 160) .font(.system(size: 16)) .padding(.top, 16)내용을 처음부터 입력 할떄는 정상 동작하지만처음부터 content 가 길 경우 160 높이 에서 잘림, 입력하면 동적으로 늘어남 OnAppear 이후에 컨텐츠 갱신..
-
Observable → Async / Await 으로 변환하여 API 처리하기: AsyncThrowingStream, withCheckedThrowingContinuation개발/Swift 2025. 4. 16. 16:35
이번 글에서는 Rx Observable 기반의 기존 API 호출 로직을 Swift의 async/await 구조로 효율적으로 변환하는 방법을 다룹니다. 특히, 단일 호출에는 withCheckedThrowingContinuation을, 지속적인 응답이나 웹소켓에는 AsyncThrowingStream 또는 AsyncStream을 활용하는 방법을 자세히 알아보겠습니다. -------------------------------------------------------------------------------- 기존 Observable 기반 삭제 기능의 문제점기존 앱의 삭제 기능은 Observable을 사용하여 구현되어 있었습니다.private func deleteImage(accessKey: String) -..
-
SwiftUI TextEditor에 키보드 toolbar가 노출되지 않는 오류개발/Swift 2025. 4. 16. 16:31
SwiftUI + TCA 강의 보러가기 SwiftUI + TCA: 실전 프로젝트로 완성하는 차세대 iOS 아키텍처| 덤벨로퍼 - 인프런 강의복잡한 SwiftUI 상태 관리, TCA (The Composable Architecture)로 깔끔하고 견고한 앱을 만드세요. 실전 프로젝트 예제로 핵심만 빠르게 배웁니다. TCA의 핵심 요소(State, Action, Reducer, Store)를 이해하고, Swww.inflearn.com ScrollView 내부에 두개의 TextEditor가있다 ScrollView { VStack(spacing: 0) { if case .post = store.contentType { TextEditor(text: $store.title...
-
[Swift] 애니메이션 정지 재생 CGAffineTransform개발/Swift 2025. 4. 11. 17:11
애니메이션 정지 재생탭 이벤트를 적용할떄 탭을 눌렀다가 떼었을때 처리를 위해서는 Tap Gesture보다는LongPressGesture를 활용하는게 더 간편한다 let tapGesture = UILongPressGestureRecognizer() tapGesture.minimumPressDuration = 0 optionView.addGestureRecognizer(tapGesture)minimumPressDuration 을 0으로 지정하면누르자마자 gesutre.state 가 began 되므로바로 터치다운 이벤트를 시작할수있다 switch gestureState { case .began: optionView.transform = CGAffineTransform(scaleX: 0.9, ..
-
UIKit SwiftUI에서 자동 스크롤개발/Swift 2025. 4. 8. 15:24
UIKit 자동 스크롤자동(동적) 스크롤 하기 위해 uikit 에서도 scrollRectToVisible 제공해줌 layoutIfNeeded() // Init 직후에 아직 내부 레이아웃이 안잡혀서 호출 필요 scrollRectToVisible(button.frame, animated: true) // ScrollView 기능근데 이게 스유 처럼 가운데로 보내주는게 아니라그냥 보이게만 해준다.스크롤 하려는 저 button 이 화면에 아예 안보이면 잘 동작하는데만약 왼쪽 찔끔 나온 상태라면 움직이지 않는 문제가 있음따라서 별도로 스크롤을 계산하여 setContentOffset 호출이 필요함layoutIfNeeded()let buttonCenterX = button.center.x DispatchQueu..