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

SwiftUI107

1. ButtonStyle Custom / 버튼 스타일 🦁ButtonStyle Custom / 버튼 스타일 🦁 버튼을 눌렀을 때, 아래와 같이 눌렸다는 표시를 위한 기본 효과가 있다. 앱 서비스의 분위기에 따라 해당 효과를 제거하기 위해 tap Gesture를 사용하는 경우도 있다. 버튼을 눌렀을 때 효과를 다양하게 커스텀 하는 방법에 대해 알아보자. 간단한 커스텀 Button { } label: { Text("Custom") .defaultButtonFormatting() //modifier } .buttonStyle(PlainButtonStyle()) // 조금 약한 효과 .buttonStyle(DefaultButtonStyle()) //기본 효과 ButtyStyle 커스텀 모디파이어를 커스텀 했던 것과 유사하다. struct PressableButton.. 2023. 6. 19.
0. ViewModifier/ 뷰 모디파이어 🦁ViewModifier/ 뷰 모디파이어🦁 아카데미에서 챌린지 중에 다른 팀원이 알려줘서 사용해본 적이 있는 뷰 모디파이어! 여러 커스텀을 하다보면 뷰모디파이어가 덕지덕지 붙게 되고 코드가 너무 길어져서 불-편 했었는데 이걸 많이 해소해줄 수 있는 녀석이 바로 ViewModifier이다. 기본적인 버튼모양을 만든다고 하면? Text("Toughie") .font(.headline) .foregroundColor(.white) .frame(height: 55) .frame(maxWidth: .infinity) .background(Color.blue) .cornerRadius(10) .shadow(radius: 10) 벌써 모디파이어가 엄청나다.. 어떤 단점이 있을까? 우선 비슷한 버튼을 만든다고 치면 이.. 2023. 6. 18.
23. 데이터 다운로드, 파일 매니저, 캐싱 종합 ⭐️데이터 다운로드, 파일 매니저, 캐싱 종합⭐️ 지금까지 배운 내용들을 종합해서 연습해 보는 예시를 살펴보자. 인터넷을 통해 json 데이터를 받아서 원하는 모델로 디코딩한 후에 해당 데이터들을 캐시에 저장해 관리하거나 파일 매니저를 통해 로컬 디바이스 스토리지에 저장하는 것이다. 어떤 데이터를 받아올 것인가? https://jsonplaceholder.typicode.com/photos 이런 json 데이터를 받아올 것이다. (총 5000장의 사진) 어떤 형태로 보여줄 것인가? 이런 리스트의 형태로 보여줄 것이다. Model json형태에 맞게 모델을 만들어 준다. import Foundation struct PhotoModel: Identifiable, Codable { let albumId: In.. 2023. 6. 16.
22. NSCache 캐시/ 이미지 캐싱 ⭐️NSCache 캐시⭐️ 캐시? 많이 들어봤을 것이다. 인터넷 옵션에서 캐시삭제, 쿠키 삭제와 같이! 캐시는 뭘까?? 캐시(Cache)는 데이터나 작업의 임시 복사본을 저장해서 이후에 빠른 엑세스를 가능하게 해주는 녀석이다. 인터넷 창을 띄웠을 때 처음에는 여러 이미지들이 로딩되는 시간이 필요해서 버벅이며 보이지만 창을 껐다가 다시 들어가면 이미지들이 더 빨리 로딩되는 것을 본 적이 있을 것이다. 이게 바로 이미지 같은 데이터들이 캐시에 저장되어 있기 때문! 그래서 캐시를 지우면 다시 이미지들을 로딩해야하기 때문에 좀 더 느리게 표시되고 버벅이는 현상이 생길 수 있다. NSCache iOS, MacOS에서는 메모리 기반 캐시를 구현하기 위해 NSCache라는 클래스가 존재한다. NSCache는 자동으로.. 2023. 6. 15.
21. FileManager 파일매니저 ⭐️FileManager 파일매니저⭐️ iOS 앱을 만들면서 데이터를 저장할 수 있는 방법은 여러가지가 있다.(상황에 따라 적절히 선택해야함) 이번에는 아이폰 내부 폴더에 직접 파일을 저장할 수 있는 파일매니저에 대해 알아보자. 먼저 데이터 여러가지 데이터 저장 방법을 비교, 정리해보자. 1. UserDefaults - 간단한 설정 값, 사용자 기본 설정 등과 같은 작은 크기의 데이터를 저장하기 위해 사용 - 주로 Key-Value 형식으로 데이터 저장, 간단한 데이터 유형(Int, String, Bool 등) 저장 - 데이터를 메모리에 로드하기 때문에 작은 크기의 데이터에 적합함. 2. CoreData - 복잡한 데이터 모델과 대량의 데이터를 관리에 유용, 상호 관련성이 있는 데이터 관계를 유지하고 추.. 2023. 6. 15.
20. @Published / Subscriber / Combine ⭐️@Published / Subscriber / Combine⭐️ 지난 시간에 이어 Combine을 활용해서 로그인 화면을 구현해 보자. 4글자 이상, 타이머는 10초 이상인 경우에만 로그인이 가능한 구조이다. 이번에는 코드마다 주석 처리를 해서 정리를 해보았다. // Created by Toughie on 2023/06/13. // import SwiftUI import Combine final class SubscriberViewModel: ObservableObject { //해당 값의 변경이 발생하면 자동으로 관련 뷰에 알림을 보내 렌더링 업데이트가 이루어짐. @Published var count: Int = 0 //Combine에서 구독을 취소할 때 사용되는 객체 타입인 AnyCancellab.. 2023. 6. 14.