.font 같은 방법으로 텍스트 세부조정 가능!.multilineTextAlignment는 여러줄일 때 align 어디 맞춰 줄건지 설정하는 거임.baselineOffset은 baseline 오프셋 주는 거고요렇게 편집툴에서 텍스트 프로퍼티 조절하는 것처럼 다양하게 커
View 구성 @AppStorage로 현재 유저가 SignedIn했는지 안했는지에 따라서 다른 뷰를 보여줄 예정 그래서 먼저 bool 값을 전역으로 설정해 줬다 > @AppStorage에 초기값을 설정하는 건 일반적인 프로퍼티의 초기값을 설정하는 거랑 다른 것 같다
.onLongPressGesture를 추가해서 롱프레스를 구현할 수 있다 minimumDuration은 최소 몇초동안 누를건지, maximumDistance는 누르고 얼마나 움직여도 되는지를 설정해주는 프로퍼티 .onLongPressGesture의 프로퍼티를 다 불러
relation ships 꼭 다시 해보기지금 getDepartments 까지 했음
임시로 저장하는 곳 캐시! 이미지 아무거나 하나 Assets에 넣어주고 바로 전에 했던 FileManager랑 거의 흡사한 플로우임 ViewModel 만들고뷰모델에 있는 이미지 뷰에서 넣어주기 CacheManager를 만들어주는데 전 시간에 안한 게 있다!!in
미니앱을 만들어볼겨 필요한 사전 지식은 요정도가 되겠다
Display Name을 변경해서 앱이 실제로 어떤 이름으로 표시 될지 지정가능 사전에 받은 asset을 추가해주자 Color는 직접 추가해줌 그리고 이 칼라들 Extensions로 빼주면 편하겠죠Color.MyTheme.칼라 이런식으로 접근 가능하게 해주자 C
Create list for coins
Adding a Search Bar
Saving to Core Data
Updating DetailView
Project Targets에 있는 Launch Screens를 지워주고스토리보드로 만듭시다! LaunchScreen을 넣어주면 끝!근데 빨리 로드된다!애니메이션을 확인할 수 있을정도로 조금 더 떴으면 좋겠음HIG에선 LaunchScreen에 딜레이를 줘서 앱의
이미지랑 칼라 Assets에 추가하고, Color Extension 만듭시다 헤더구성, 버튼 구성홈뷰모델 environmentObject로 만들기 이미지서비스, 이미지뷰모델, 이미지뷰 만들기
모델들을 구성해줍시다Mood 모델 부터 만들어줬다! Mood 라는 이넘타입이고, String RawValue를 가지면서 모든 케이스들을 나타낼 수 있는 데이터가 될거!그리고 computed Property로 case에 따라서 이미지이름이나 이름을 표시할 수 있게 해줬
Color Set이랑 이미지 두개 준비!웹쪽에서 스샷찍어서 포토샵으로 누끼 땄는데크기 안맞으면 모바일에서 스샷해서 가져오는 것도 방법이겠다! GeometryReader 사용!
요런 뷰가 있다고 생각해보자이렇게 아래에 많이 달려있는 모디파이어를 재사용가능하게 해줄 수 있음 새로운 struct를 선언하고, ViewModifier 프로토콜을 채택해줬다View랑 비슷한 뉘앙스로 필수로 구현해줘야할 메소드가 있음 요렇게 말이죠 그리고 기존에 있
기본 버튼은 클릭하면 틴트 바뀌는 게 있는데프로덕션 어플 만들려고 하다보면 이런 거 커스텀해야할 필요가 종종 있음 .buttonStyle로 커스텀해줄 수도 있는데 이거 말고 더어어어 커스텀도 가능 뷰모디파이어가 그랬던 것 처럼 ButtonStyle 커스텀도 make
요런 형식의 트랜지션을 만들어줬음(RoundedRectangle에서 frame maxWidth랑 maxHeight 추가해준건 화면 바깥에서 나오게 할라고!!) 이제 커스텀 트랜지션을 추가해봅시다 뷰 모디파이어 하나 만들어주고 AnyTransition의 extens
| ---|---| 요런 뷰가 있다고 가정해보자 저 Rectangle을 화면 아래로 이동하고 싶다고 생각해보셈 그러면 .offset같은 걸로 하면 되겠다! 생각하게 될 텐데 다른 방법으로도 가능함 ![](https://velog.velcdn.com/images/
Shape을 커스텀 해봅시다 Rectangle같은 애들 설명을 보면 :Shape이라는 프로토콜을 채택하고 있는 걸 알 수 있음 크립토 앱 만들 때랑 비슷해용 path로 그려주는 겨 path.move가 커서를 움직이는 느낌이라면 path.addLine은 라인을 그려
Shapes 만드는 거의 연장선 먼저 Arc를 만들어봅시다 아래 뉘앙스의 다른 쉐입도 만들어봄 Arc 그리는 건 콤파스처럼 그리는 거라 생각하면된다!! 쿼드 커브는 배지어 느낌으로 그리는 거!!(살짝다르긴한데 뉘앙스는 비슷)시작점 끝점 있고 이 사이에 컨트롤 포
여기까진 전에 하던거랑 방법이 비슷함.근데 지금 cornerRadius가 4모서리 다 animate되고 있는데이 중에 하나만 animate 하려고 한다면? 새로운 Shape을 만들어줬다 그리고 addArc를 이용해서 둥글게 호를 만들어줌 여기서 cornerRadi
여태까지 자주 사용해왔지만 인지하지 못하고 있었던 Generics!! 먼저 뷰모델 만들어주고 어떤 뉘앙스로 흘러가는 지 살펴봅시다 저기 뷰에서 .onTapGesture일 때 array의 아이템을 다삭제해주는 메소드를 작성했는데 지금 이 메소드는 타입에 상관없잖음!!d
@ViewBuilder를 사용해보자 먼저 요런 뷰를 만들었음 지금 만들어준 바디에 있는 뷰를 따로 빼서 만들어주자 요렇게!! 근데 지금 헤더뷰 레귤러에 있는 텍스트들 중Description같은 경우 옵셔널하게 만들어준다면?요런 if let 으로 감싸준 폼이 되겠
네비게이션 뷰의 차일드 뷰에서 navigationTitle을 변경할 때 사실은NavigationView의 title을 업데이트하고 있었음 그리고 Child View에서 데이터를 parent View로 넘길라고 한다면Binding을 써줘야 했죠 근데 위의 네비게이션
기본적인 NavView는 이런 느낌이죠~ 이 네비게이션 뷰를 고대로 이용해서 커스텀하게 만들어봅시다 새로운 CustomNavBarView를 만들어줌 바디 깔끔하게 만들어주고필요한 변수들 선언해줬다!CustomNavBar를 담아줄 컨테이너 뷰도 구성해줬음!! Spa
UIViewRepresentable은 UIKit의 UIView를 SwiftUI로 쓸 수 있게 하는 방법 중하나 이렇게 간단한 건 금방 구현할 수 있는데조금 더 복잡한 UIView가 된다면? 예를들어서 SwiftUI로 구현한 TextField같은 경우에 커스텀에 제한
UIViewController를 바꾸는 것도 이전에 했던 내용과 동일함Representable 프로토콜을 채택해주면 된다. sheet으로 segue를 해주면 뙇방금 만든 UIViewController가 보입니다~ 이제 UIViewController에 Label이 있
의존성 주입이라는 어려운 말인데 어떤 건지 알아보자 https://jsonplaceholder.typicode.com여기서 간단한 데이터 사용해서 구현해볼예정 이중에 posts 데이터를 사용해봅시다 요렇게 getData하는 메소드를 DataService
UITesting은 간단하게 뷰 테스트 하는 거라 생각하면 됨 뷰모델이랑뷰 간단한 거 만들어줬습니다~!그리고 UI를 띄울만한 내용들 구성해줌! UnitTests처럼 UITests도 새로운 타겟으로 만들어줘야함 테스트할 뷰에 맞는 UITests파일 만들어주고! 지
DataService가 있고 이걸 ViewModel에서 받은 다음에 뷰에서StateObject로 가지고 있다고 해보자 여기서 콤바인의 좋은 점이 따로 취소 안했으면 계속 살아있다는 거!구독 티켓을 계속 가지고 있어서 값 변하면 변한 값을 뷰에 뿌려줄 수 있다 이번엔
@escaping closure는 Combine Framework이 나오기 전에 비동기를 처리하던 방식 요런 flow가 있다고 해봅시다 예전에는 요런식으로 dataTask가 처리되고 나면 처리된 결과 자체를 handler에 담아서 다른 스코프에서 또 처리를 해주는
container는 우선은 bundle identifier랑 같게 해줌container 한번 만들면 삭제 안되니까 주의! 그리고 나서 CloudKit Console버튼 누르면 콘솔창이 열린다!그러고 나서 Database에 들어가면 요런 창을 볼 수 있음 다시 엑코로
CloudKit엔 다이렉트로 이미지나 에셋을 저장할 수 없다CKAsset으로 변환을 해줘야함 보통 Records에서 값을 가져올 때 필드 같은 밸류는 바로 다운이 되는데CKAsset같은 밸류가 있으면 url로 넘어간다 에셋 폴더에 있는 이미지를 업로드 해봅시다 에
NavigationView가 deprecated 될 예정이다NavigationStack으로 사용하게 되면 프로그래매틱하게 View를 이동할 수도 있게 됨Pop to Root 같은 느낌이겠죠!!NavigationStack으로 이제 다 바꿔주면 된다!!요렇게 구성을 해놓아