[SwiftUI] 프로그램 차단 기능
·
SwiftUI/개발
작업 내용 프로그램 사용성 검증을 하기 위해서 우리의 Target인 선생님들에게 MVP(Minimum Viable Product)를 UT(User Test)를 해야하는 작업이 생겼습니다. UT를 진행하면서 UT동안만 프로그램을 사용할 수 있게 프로그램을 승인 및 차단하는 기능을 만들어야 합니다. 절차 TimeFetcher클래스안에 있는 fetchTime함수를 이용하여 서버에서 Json파일을 디코딩 하여 시간(date)을 가져옵니다. formatterDate를 통하여 Date Type을 String Type으로 변경하여 currentTime 변수에 넣어줍니다. checkTimeFormat함수를 이용하여 currentTime시간을 settingHour시간안에 속해 있을때만isAbled를 true로 값을 주어..
[SwiftUI] Combine - 기본
·
SwiftUI/정리
Combine을 쓰면 좋은 이유 아래 코드 예시는 로그인을 할때 userId와 userName을 가져올때 사용할 수 있는 코드이다. switch case를 사용하며 값이 두개 밖에 처리 할 것이 없을때는 사용 가능하겠지만 값이 점점 많아지고 복잡해지면 switch case를 이용해서 하기 어려워질 것이다. func fetchUserId(_ completionHandler: @escaping (Result ) -> Void){ DispatchQueue.main.asyncAfter(deadline: .now() + 2) { let result = 24 completionHandler(.success(result)) } } func fetchName(for userId: Int,_ completionHandl..
[SwiftUI] Combine
·
SwiftUI/정리
Combine Framework 시간에 따라 값들을 처리하기 위한 선언적인 Swift API 시간에 따라 변할 수 있는 값으로 노출하기위해 publisher를 선언합니다 publisher로부터 받아오기 위한 subscriber를 선언합니다. publisher는 시간에 따라 일련의 값을 전달할 수 있는 타입을 선언하며, 연산자를 사용하여 상위 발행자로부터 받은 값을 처리하고 다시 발행할 수 있습니다. subscriber는 publisher로부터 이벤트를 얼마나 빨리 받을지 제어 할 수 있습니다. 텍스트 필드의 업데이트와 URL 요청, 응 답 처리 등을 조율할 수 있습니다. 코드를 더 읽기 쉽고 유지 보수하기 쉽게 만들 수 있습니다. 이벤트 처리 코드를 중앙 집중화하여 중첩된 클로저 및 규약 기반 콜백과 같..
[Swift] SwiftLint
·
SwiftUI/정리
SwiftLint가 뭘까? 회사나 팀에서 정한 스타일 규칙을 따르지 않는 코드를 확인하고 표시하는 것을 도와줘요. 일관된 코드를 작성하는데 도움을 주는 역할을 해요. 공식 Swift 언어 문서와는 직접적인 관련이 없어요! SwiftLint를 사용하는 이유는?? 1. 신경이 분산되지 않고 중요한 것에 집중 모든 Swift 코드가 일관성을 유지하도록 하기 위해서! 새로운 개발자가 합류하거나 예전 코드를 읽을 때 읽기 쉽도록 도움을 줍니다. 이렇게 일관적으로 코드를 작성하면 어떤 코드가 파일의 다른 부분과 비교해서 문법이 이상한 부분을 찾는 역할을 한다고 해요 2. 프로젝트간 일관성 유지 개인 프로젝트, 회사 프로젝트 혹은 전체 Swift 커뮤니티간에도 일관성 유지가 필요해요 한 프로젝트에서 SwiftLint..
[SwiftUI] NavigationStack
·
SwiftUI/정리
기존 네비게이션 NavigationLink("Details", isActive: $item.showDetail) { DetailView() } 새로운 네비게이션 API Navigation의 새로운 종류 NavigationStack 새로운 시스템 설정 앱, 애플워치 앱 등 (푸시 팝 인터페이스) NavigationStack(path: $path) { NavigationLink("Details", value: value) } NavigationSplitView Mail 또는 Notes와 같은 다중열 애플리케이션에 적합 iPhone, iPad의 SlideOver, AppleWatch와 Apple TV의 단일 열 스택에 자동으로 적응 NavigationSplitView { RecipeCategories() } ..
[SwiftUI] 애플스토어 앱 클론코딩(스크롤)
·
SwiftUI/개발
애플스토어 스크롤 피그마로 받은 UI 디자인 개발 부분 Scroll 길이 계산 (애플스토어 앱 참고) UIScreen.main.bounds.height 사용 (GeometryReader도 가능) PreferenceKey 프로토콜 사용 기능 : SwiftUI의 레이아웃 시스템에서 뷰의 크기, 위치 또는 다른 사용자 정의 정보와 같은 데이터를 수집하고 공유하기 위해 사용 디바이스의 높이를 측정 enum, switch 사용하여 색상마다 View를 다르게 그려줌 Scroll Animation .onPreferenceChange(OffsetPreferenceKey.self) { value in currentHeight = value print("currentHeight: \\(value)") // 현재 디바이스 ..