
DatePicker를 그냥 사용했더니 아이폰의 언어 설정이 한국어로 설정되어 있어도 영어로 떠서 당황했다.. 해결 방법DatePicker("날짜를 선택해주세요", selection: $selectDate, in: Date()..., displayedComponents: .date) .environment(\\.locale, Locale(identifier: String(Locale.preferredLanguages[0]))) // 사용자의 최상위 언어 가져오기이렇게 .environment를 추가하면 된다
단순하게 NavigationLink에 onTabGesture를 붙이면 될 거라고 생각했다. 하지만 이러면 onTabGesture는 동작하지 않는다.. 해결 방법struct InfoCollectionView: View { @State private var navigate = false // NavigationLink 기능 var body: some View { Button { // Button(onTabGesture) 기능! } label: { Text("완료") } .background( // NavigationLink 기능 NavigationLink(destination: SelectRegionView(viewModel: SelectRegionViewMod..

.background( Color.white .shadow(color: .gray.opacity(0.2), radius: 10, x: 0, y: 0) .mask(Rectangle().padding(.top, -20)))Button의 그림자는 이렇게 단순하게 background와 shadow를 이용하면 됐다. 하지만 TabView는 이렇게 해도 동작하지 않는다. 해결 방법import Foundationimport UIKitimport SwiftUIextension UITabBarController { open override func viewWillLayoutSubviews() { super.viewWillLayoutSubviews() tabB..
Combine이란?반응형 프로그래밍의 개념을 기반으로 개발된 프레임워크시간 경과에 따른 값을 처리하기 위한 통합된 선언적 API반응형 프로그래밍데이터 스트림과 변화의 전파에 관련된 선언형 프로그래밍 패러다임이다.데이터 스트림 : 시간에 따라 만들어진 일련의 이벤트 ex) 탭 이벤트 스트림선언형 프로그래밍명령형 프로그래밍 선언형 프로그래밍 명령형 프로그래밍선언형 프로그래밍How(어떻게)What(무엇)코드가 어떻게 작업을 수행해야 하는지결과에 집중하고 구체적인 행위를 감춤행위를 정의하고 행위에 데이터를 전달핵심 개념들Publisher : 값을 방출하거나, 완료 이벤트나 실패 이벤트를 전할 수 있다.Just() : 단일 값을 즉시 생산하는 Publisher. 에러 타입은 항상 Never이다.Future() :..
String에 index로 접근 let index = str.index(str.startIndex, offsetBy: i) let char = str[index] 공백을 기준으로 문자열 나누기 let strs = str.split(separator: " ") 부분문자열 구하기 let subStr1 = t[startIndex.. 정수 대문자, 소문자 변경 let lowerStr = str.lowercased() // -> 소문자 let upperStr = str.uppercased() // -> 대문자 캐릭터 ↔ 아스키코드 변경 // A ~ Z : 65 ~ 90 // a ~ z : 97 ~ 122 let asciiIntValue = Int(char.asciiValue!) // 캐릭터 -> 아스키 let c..