LOTR Converter (fin)
modifier 정리 및 추가 문제 수정 를 보면 알겠지만 값이 입력된 상태에서 Currency를 바꾸면 값이 변경되지 않는다. 이제 이부분을 보완해본다. 우선 sheet가 있는 부분에 text field의 onchange modifier를 옮겨주고 .onChange(of: leftAmount) { if leftTyping { ...
modifier 정리 및 추가 문제 수정 를 보면 알겠지만 값이 입력된 상태에서 Currency를 바꾸면 값이 변경되지 않는다. 이제 이부분을 보완해본다. 우선 sheet가 있는 부분에 text field의 onchange modifier를 옮겨주고 .onChange(of: leftAmount) { if leftTyping { ...
Grid 부분 별도로 추출 이전글에서 최종 코드로 적었던 부분을 IconGrid로 별도의 View로 만들어 준다. 코드의 간소화를 위함이다. struct SelectCurrency: View { // 생략 var body: some View { ZStack { // 생략 VStack...
해당 강의를 잊고 있다가 마무리를 짓기 위해 작성한다. 지난글에 이어 몇달만에 다시하는 건지는 몰라도 내용자체는 어렵지 않기에 마무리를 짓는다. SelectCurrency View 만들기 위와 같은 View를 만들기위해 구상은 다음과 같이 한다. struct SelectCurrency: View { var body: some...
LocationDetailView 기능 추가하기 ViewModel을 하나 더 만들어 준다. 그리고 LocationDetailView에 있던 변수들을 ViewModel에 옮겨준다. let columns = [GridItem(.flexible()), GridItem(.flexible()), G...
LoadingView 만들기 이전에는 ProgresHUD Library를 통해서 로딩하는 것을 표현했는데, 여기서는 별도의 View를 만들어서 관리한다. struct LoadingView: View { var body: some View { ZStack { Color(.systemBackground) ...
Record 값 가져오기 이전글에서 Cloud에 등록을 했는데, 이젠 등록한 값을 가져오는 작업을 해보자. getProfile이라는 함수를 만들어 주었다. func getProfile() { CKContainer.default().fetchUserRecordID { recordID, error in guard let reco...
Profile Validation 프로필을 설정할때 유효성검사를 위해 함수를 만들어 준다. func isValidProfile() -> Bool { guard !firstName.isEmpty, !lastName.isEmpty, !companyName.isEmpty, ...
Profile 설정 화면 보강하기 첫번째 글에서 만들었던 프로필 설정 화면을 더 보완해보도록 한다. AvatarView 수정 struct AvatarView: View { var image: UIImage // new var size: CGFloat var body: some View { Im...
이렇게 온보딩 페이지를 만들어 본다. LogoView 새로운 파일로 이전하기 기존에 LocationMapView에 있던 LogoView를 새로운 파일에 옮겨준다. struct LogoView: View { var frameWith: CGFloat var body: some View { Image("...
Combine을 사용한 날씨 앱 만들기. SwiftUI & Combine을 사용하여 간단한 날씨앱을 만들어 보려고 한다. 지역을 저장하게 하여, 사용자가 저장한 지역의 날씨도 보여주면 좋을 것 같아서 이번엔 SwiftData를 프로젝트를 생성하면서 만들어본다. UIDesign gif Image를 Background로 사용하기 검색을...