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

SwiftUI/SwiftUI(Basic)66

[55] Background Materials ⭐️Background Materials⭐️ 애플만의 갬성.. 뒷배경이 불투명하게 블러효과처럼 보이는 글래스 모피즘 디자인을 Material을 통해 간단하게 구현할 수 있다. // Created by Toughie on 2023/05/11. // import SwiftUI struct BackgroundMaterialPrac: View { var body: some View { VStack { Spacer() VStack { RoundedRectangle(cornerRadius: 4) .frame(width: 50, height: 4) .padding(.top) VStack { Spacer() Text("Apple Style") Spacer() } Spacer() } .frame(height: 350) .. 2023. 5. 11.
[54] AsyncImage / @unknown ⭐️AsyncImage / @unknown⭐️ AsyncImage는 SwiftUI에서 이미지를 비동기적으로 로드하는 데 사용되는 뷰이다. 이미지를 로드하는 동안 UI를 멈추지 않고 사용자 경험을 향상시킬 수 있다.(검은 화면만 보이면 유저는 어떤 상황인지 알지 못함) *URL(Uniform Resource Locator 또는 통칭 web address, 문화어: 파일식별자, 유일자원지시기) 네트워크 상에서 자원이 어디 있는지를 알려주기 위한 규약 *캐시(cache) - 데이터나 값을 미리 저장해 놓는 임시 저장소. 데이터가 캐시에 저장되어 있다면 다음에 데이터에 접근할 때 더 빠르게 데이터를 가져올 수 있다. (캐시 삭제) 캐시는 데이터를 빠르게 가져올 수 있어서 앱 성능 향상에 도움이 된다. 네트워크 .. 2023. 5. 11.
[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.