MapKit (9)
LocationDetailView 기능 추가하기 ViewModel을 하나 더 만들어 준다. 그리고 LocationDetailView에 있던 변수들을 ViewModel에 옮겨준다. let columns = [GridItem(.flexible()), GridItem(.flexible()), G...
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로 사용하기 검색을...
Alert 만들기 struct AlertItem: Identifiable { let id = UUID() let title: Text let message: Text let dismissButton: Alert.Button } struct AlertContext { // MARK: - MapView Er...
Container?? Container는 3가지 Database를 가지고 있다. Public: 모든사람이 앱을 통해 DB를 볼 수 있다. Private: 사용자가 각자 자기자신의 데이터만 볼 수 있다. Shared: 사용자간 데이터를 공유 할 수 있다. CKRecord Docs CKReference Docs CKOperation Docs C...
이번엔 MapKit, CloudKit을 활용한 지도앱을 만들어본다. 기본적인건 최대한 생략을 해보는걸로… 프로젝트에 클라우드 기능 추가하기 프로젝트를 생성하고 iCloud를 추가해준다. 그리고 클라우드킷을 체크해주면 Container를 추가하는 창이 뜨는데 + 버튼을 눌러 추가해주자. App group 컨테이너 추가하듯 Ident...