[SwiftUI Bootcamp] beginner
background 뒤에는 뷰라면 무엇이든 올 수 있음정말 다 가능함 background는 프레임 뒤로 그려줌 오버레이는 프레임 앞으로 그려줌!alignment는 이제 안바뀌는 것 같다(예전엔 가능했음)피그마에서 그리는 것처럼 금방 그려짐 오버레이는 앞에 back
Stack안의 파라미터를 통해서 정렬, spacing 설정 가능text의 frame을 직접 설정해서 공간을 줄 수도 있겠지만.padding을 통해서 패딩을 주면 간결해짐 코드 프레임을주고 패딩을 주는 방법도 있음패딩에 패딩을 줄 수도 있다! 주황색이 Spacerob
ScrollView()
뷰가 변하는 상태를 알 수 있게해주는 프로퍼티 래퍼버튼을 누르게 되면 상태가 변하게 됨! 뷰는 이걸 알아채고 바로 렌더링 해주고 view나 function은 따로 분리 가능 이렇게 직접 스택 자체를 Extract도 가능하다커맨드 클릭! 이렇게 구성한 UI가 있다고
animtion을 구현하는 건 정말 간단하다withAnimation 안에 넣어주면됨 그럼 이 안의 로직으로 영향을 받는 뷰들을 애니메이션 시켜줌 지금상태에서 RoundedRectangle 코너 삼항연산자로 추가해줘도 애니메이션 같이 됨modifier할 요소들을 조금씩
네비게이션뷰는 하나만 있으면 된다! 절대로 중첩하지 않기 NavigationView 안에서 .navigationTitle로 접근해 navigationTitle 생성 가능그리고 타이틀 디스플레이모드도 설정이 가능함.automatic이 기본값으로 설정되어 있고 스크롤을하
Picker() 태그는 어떤 값이 선택될지임! 말 그대로 '어떤 값'이 선택될 것인지 태그해서 구분해주는 거 이렇게 설정한다고 할 때 지금처럼 반복이 되는 Text, tag는 ForEach로 처리할 경우에 더 간결해진다 ForEach안에 반복할 내용을 넣고 반복되
칼라세팅은 방법이 다양함지금처럼 칼라셋추가하고 칼라를 불러와도 되고,@Environment에서 colorScheme을 가져와서 삼항연산자로 색 지정해줘도 됨 프리뷰할 때 prefferredColorScheme을 설정해서 프리뷰에 어떤 칼라모드가 뜰지도 설정 가능하다
커맨드 옵션p누르면 프리뷰 새로고침 됨! 앱이 복잡해질수록 로직을 분산해서 관리하면 좋음 요렇게 작성했을 때 이 로직들을 분리해보자 먼저 getFruits와 deleteFruit은 모델(데이터)과 관련된 로직임 FruitViewModel이라는 클래스를 새로 만들
@AppStorage @AppStorage는 SwiftUI버전의 UserDefaults임 작은 데이터베이스 필요할 때 사용함 UserDefaults를 사용할 때와 @AppStorage를 사용할 때 두 가지를 비교해보고 어떤 차이점이 있는지 알아봅시다 UserDef
.background(.thinMaterial)이 부분이 Material임페이스타임 같은거 쓰면 Back이 투명하게 보이거나 블러처리가 되는 것처럼 조금 시각적인백을 보여줄 수 있잖음 그거 사용하는 거임 이거! .background() 괄호 안에 .material치
List의 row가 될 뷰를 추출해줌.그리고 새로운 파일로 옮겨줬다샘플 데이터를 만들고 ForEach로 표현!navigationBar아이템들을 추가해줌leading에는 EditButton, trailing에는 navigationLink를!이렇게 보니까 navigatio
updateItem을 저렇게 하면 안된다는 게 이해가 안되서 id 찍어서 확인해봄 결론은 상관없는 것 같음 🤔 다른 이유가 있는 건지 찾아보기로...
심플.onLongPressGesture 추가해주면 됩니다이렇게 프로퍼티 추가도 가능maximumDistance는 터치하고 얼마나 포인트를 움직일 수 있게 해줄건지임 onLongPressGesture 는 프로퍼티로 어떤 동작을 수행할지, 그리고 눌러지는 동작 동안 어떤
스크롤 뷰랑은 살짝 다름채팅 어플을 예로들면 제일 최근에 대한 내용이 상단으로 올라오게 해주는 거 scrollViewReader를 넣어주고, proxy를 이용해서scrollTo지점을 설정할 수 있음 이 때 id를 ForEach에 붙여줘서 어떤 id로 이동할 것인지
요런 뷰가 있다고 해보자레이팅으로 별점을 매기는 뷰임근데 지금 tap했을 때 딱딱 끊기는 느낌이 드는데 이걸 부드럽게 이어보자 starsView를 새로 만들고, 그 위에 Rectangle을 오버레이로 올려줌그리고 .mask(마스크할 대상)을 해주면 끝! rati
String은 Hashable 프로토콜을 기본적으로 준수하고 있음 오케이이번엔 구조체를 전달해보자 Hashable이란 프로토콜을 필요하다고 함먼저 Identifiable을 채택해서 에러를 없애보자 이렇게 해줄 수도 있고진짜 Hashable을 채택해볼수도
userModel이 있고, viewModel에서 init될 때 userModel을 추가해준다고 생각해보자 만들어준 뷰모델과 모델로 여러개의 뷰를 그려줌 뷰모델에 filter될 array를 가져올 수 있는 메소드를 작성 축약하면이렇게 가능하겠죠 filter는 이렇
Core Data with MVVM
Project setup 프로젝트 새로 만들어주고 Assets 다운 받은 콘텐츠로 바꿔줌 location DataService라는 파일이 있는데 Location 모델이 어떤 모양일지 대충 적혀있음 참고해서 Location 모델을 만들어보자 DataServices라
CoreData 용어 설명뷰모델을 먼저 만들어줬다 CoreData는 싱글톤으로 사용하니까 static으로 instance만들어주고container에 로드와 save 할 수 있게 해줌 Entity들을 만들어주자Business -> Department -> Employ
먼저 뷰모델을 만들어주고 data가될 Array도 구성해줬다 그리고 fetch메소드와, data들이 download되고 있다는 가정하에download메소드도 작성해줌 뷰는 스크롤뷰로 구성해주고, ForEach뷰도 함께 작성해서 dataArray를 띄워줄 예정 이
무비 모델을 만들었다그리고 무비모델이 바인딩된 변수도 선언해줌 근데 MoviewModel 이름을 바꾸고 싶을 수 있잖음이렇게 TVModel로 바꿔주고 싶어졌다고 치면MovieModel로 사용하던 것들은 코드를 수정해야함그런 작업들을 줄여줄 수 있는게 typealias
How to use: Codable 뷰모델을 만들고 @StateObject로 래핑해줌