Starbucks Caramel Frappuccino
본문 바로가기
  • 그래 그렇게 조금씩

SwiftUI107

ProgressBar 진행바 만들기 / GeometryReader/ available size 앱 안내 온보딩 페이지 등에서 자주 보이는 진행바를 만들어 봤다. 여기서는 shape의 너비를 변경시키는 방식이다. 애니메이션을 적용해서 부드럽게 채워진다. // Created by Toughie on 2023/05/09. // import SwiftUI struct ProgressBarView: View { //탭뷰를 위한 상태 프로퍼티. tag에 따라 변경됨. @State private var selectedTab: Int = 0 //selectedTab 변경에 따라 값이 바뀜 -> 진행바 너비 늘어남 @State private var progress: CGFloat = 0 let stringArray: [String] = ["안녕하세요!", "반가워요~", "준비", "시작!"] var body: .. 2023. 5. 9.
[53] 온보딩뷰 만들기 ⭐️온보딩뷰 만들기⭐️ Onboarding 지금까지 배운 개념들을 활용해서 온보딩뷰를 만들어 보자. 간단하게 살펴보면 첫 화면 이름 입력 화면(입력값 체크) 나이 입력 화면(슬라이더) 성별 입력(피커) 그리고 화면별 트랜지션, AppStorage 활용에 초점을 두면 된다.(앱 껐다 켜도 데이터 남아있음) 인트로 화면 // Created by Toughie on 2023/05/07. // import SwiftUI struct IntroView: View { //앱스토리지에 저장해둔 데이터를 통해 온보딩뷰 or 프로필뷰 표시 @AppStorage("signed_in") var currentUsersignedIn: Bool = false //AppStorage 프로퍼티를 통해 트랜지션 애니메이션을 구현하려 .. 2023. 5. 8.
[52] @AppStorage / UserDefaults ⭐️@AppStorage / UserDefaults⭐️ 앱을 사용하다가 잠시 껐을 때 (혹은 꺼졌을 때) 데이터가 저장되어야 하는 경우가 있다. (사실 대부분이겠지만..) 방대한 데이터나 정말 중요한 데이터들은 코어데이터나 서버를 활용해야겠지만 작은 데이터를 손쉽게 저장할 수 있는 방법 중 하나가 바로 UserDefaults이다. UserDefaults는 앱이 실행되는 동안 데이터를 유지하기 위해 사용되는 인터페이스이다. 일반적으로 키-값 쌍으로 저장되는 데이터를 관리하며 키-값 쌍을 통해 접근할 수 있다. (forKey) UserDefaults를 사용하면 앱의 설정 정보나 사용자의 환경 설정, 최근 검색어 등을 저장할 수 있다. 이 정보는 앱이 종료되어도 유지되며, 앱이 재실행되면 다시 불러올 수 있다.. 2023. 5. 7.
[51] @EnvironmentObject / 뷰 계층 구조 ⭐️@EnvironmentObject / 뷰 계층 구조 View Hierarchy⭐️ 지난 시간 @StateObject, @ObservedObject를 떠올려 보자. 만약 여러 뷰에서 모델에 접근해야 하는 경우라면 위 개념들을 활용할 경우 매 뷰마다 바인딩을 해줘야 한다. (ex. 네비게이션 뷰를 활용하는 경우 - 네비게이션 링크마다 모델에 대한 바인딩이 필요함.) 결국 네비게이션 뷰에서 이어지는 네비게이션 링크들은 모두 같은 뷰 계층에 속해있는데 말이다. 이런 경우에 environmentObject를 활용할 수 있다. environmentObject는 여러 뷰에서 공유되는 데이터를 관리하기 위한 방법 중 하나이다. environmentObjects는 ObservableObject 프토토콜을 준수하는 객.. 2023. 5. 7.
[50] @Publisehd, @StateObject, @ObservedObject / MVVM ⭐️@Publisehd, @StateObject, @ObservedObject / MVVM⭐️ SwiftUI의 뷰를 많이 그려보면서 @State 프로퍼티 래퍼는 많이 써봤을 것이다. 간단하게 말하면 @State 변수에 변화가 있으면 뷰가 이를 감지하고 새로 뷰를 그린다. (리프레시된다.) 지금까지는 View 구조체 내부에 함수도 있고, 다양한 변수도 있고 그랬다. 규모가 작은 코드나 프로젝트에서는 상관없을 수도 있지만, 코드의 양이 방대해지면 유지보수도 힘들고 뭐가 어디에 있는지 알기 어려워진다. -> 코드분리의 필요성이 있다. 그리고 그 유명한 MVVM 아키텍쳐를 이해하기 위해서도 @Publisehd, @StateObject, @ObservedObject를 이해해야한다. MVVM 아키텍쳐는 모델 - 뷰.. 2023. 5. 7.
[49] custom Model 커스텀 모델/ Identifiable ⭐️custom Model 커스텀 모델/ Identifiable⭐️ 구조체, 클래스와 같은 커스텀 타입은 관련된 속성, 메서드들을 모아서 사용하는데 의의가 있음을 기억하자. 이 예시를 보면 리스트 안에 셀에 정보(속성)가 굉장히 많이 들어있다. 닉네임, 이름, 팔로워수, 온라인상태여부, 검증여부 등.. 따라서 해당 속성들을 묶어서 새로운 모델을 만들어 보자. // Created by Toughie on 2023/05/02. // import SwiftUI //다양한 속성을 담기 위한 커스텀 모델 struct UserModel: Identifiable { var id: String = UUID().uuidString let nickName: String let userName: String let foll.. 2023. 5. 3.