ios
[iOS/SwiftUI] V,HStack 과 LazyVStack 차이
SwiftUI의 LazyVStack은 화면에 보이지 않는 컨텐츠를 로드하지 않고 효율적으로 스크롤 가능한 세로 뷰를 구현하는 데 사용된다. VStack과 비슷하지만, LazyVStack은 필요한 경우에만 뷰를 생성하기 때문에 매우 큰 데이터 세트를 처리하는 데 유용하다. 즉, LazyVStack은 매우 큰 데이터 세트가있는 경우 성능 문제를 해결하기 위해 사용된다. 이 컴포넌트는 데이터가 화면에 보이는 경우에만 필요한 뷰를 생성하기 때문에, 화면에 보이지 않는 데이터는 로드되지 않아 성능이 향상된다. 또한, 스크롤 할 때마다 새로운 셀을 생성하기 때문에 메모리를 효율적으로 사용할 수 있다. 1...10000개의 데이터를 불러올때의 View를 그리는 시간 차이 예시이다. 왼쪽 VStack은 10000개의 ..
[SwiftUI] 키보드 focus, 클릭시 사라지기, View가림현상 간단 해결방법
부모 뷰에서 자식 뷰로 넘어갈때 TextField에 focus가 유지되는 기능이다. iOS 15 부터는 UIKit 필요 없이 @FocusState를 사용해 TextField의 클릭여부를 관리 할 수 있다. FocuseState는 PropertyWrapper로 @State를 통해 상태 변수를 만들어 사용했던 것처럼 사용할 수 있다. 하지만 TextField와 SecureField에 달 수 있는 .focused 메소드에서 사용 가능하다. struct SearchView: View { enum Field: Hashable { case searchBar } @Environment(\.dismiss) var dismiss var body: some View { NavigationStack { VStack { se..
[SwiftUI] 이미지캐싱 Kingfisher SDWebImage 차이 & 사용법
Kingfisher는 Swift로 작성된 인기있는 iOS용 이미지 다운로드 및 캐싱 프레임워크이다. 원격 URL에서 이미지를 로드하고 표시하기 위한 사용하기 쉬운 API를 제공한다. kingfisher는 이미지 로딩 성능을 개선할 수 있는 고급기능도 제공한다. 캐싱이란? 캐싱(Caching)은 데이터나 정보를 미리 저장해두는 것이다. 이를 통해 이후에 해당 데이터나 정보에 대한 요청이 있을때 빠르게 제공할 수 있다. 보통 캐싱은 매우 빠른 속도로 데이터를 처리하는 메모리나 디스크에 저장된다. 이렇게 저장된 데이터는 나중에 같은 데이터에 대한 요청이 있을 때, 캐시에서 직접 가져와서 처리함으로써 원래 데이터를 가져오는 것보다 훨씬 빠르게 처리가 가능하다. Ex) Firebase에 등록되어 있는 imageU..
[SwiftUI] Firebase ViewModel 'Combine' snapShot Listener(파이어베이스 스냅샷 리스너)
Combine 사용전인 전 글 '[SwiftUI] Firebase Storage 다중이미지 upload & retrieve, 별점 리뷰 글 posting' 을 보면 비교를 쉽게 확인할 수 있다. 먼저 등록할 가게정보의 Store 구조체를 만들어준다. import Foundation import SwiftUI import UIKit import FirebaseFirestore import FirebaseFirestoreSwift struct Store: Codable, Hashable, Identifiable { @DocumentID var id: String? var storeName: String var storeAddress: String var coordinate: GeoPoint var store..
[SwiftUI] Firebase Storage 다중이미지 upload & retrieve, 별점 리뷰 글 posting
Firestore database는 1.5mb 이하의 데이터만 저장이 가능하기에 이미지를 업로드 하지 않고 database에는 이미지의 uuid를 배열로 등록하여 저장하고 일반 하드인 Storage에 업로드 해야한다. retreive시에는 Storage에 저장된 UUID로 생성한 review.id, image.id의 url을 불러와 database에 저장한다. 1. 먼저 이미지 업로드 전에 Review에 들어갈 속성들을 구조체로 만든다. review(post)마다 uuid, 로그인 사용자 판별 id, 리뷰 글, 다중 이미지 처리하기위한 배열, 사용자의 닉네임, 별점(깍두기 이미지 대체) createdDate는 작성된 한국 시간별로 리뷰를 분류하기 위해 사용한다. import Foundation impor..
[SwiftUI] Firebase Storage Post Image upload & retrieve 단일이미지
Firestore database는 1.5mb 이하의 데이터만 저장이 가능하기때문에 이미지를 업로드 하지 않고 일반 하드인 Storage에 upload해야 한다. retrive시에는 Storage에 저장된 UUID로 생성한 post.id, image.id의 url을 불러와 database에 저장한다. 1) 구조체 초기화 import Foundation import UIKit struct Post: Hashable, Codable, Identifiable { var id: String var title: String var contents: String var likeCounts: Int var imageName: String? let createdAt: Double var imagePath: String..