UIimageView와 UILabel 그리고 UIButton을 스택뷰로 묶고button과 label에는 height 수치를 오토레이아웃으로 넣어 줬다.그리고 imageView와 label을 ViewController에 IBOutlet으로 넣어줬는데여기서 잠깐! 이 각
CollectionView가 뭐야?! 요런 구조임. TableView도 있는데 비슷하다 차이점은 CollectionView는 인스타그램! TableView는 메시지앱! 정도라 생각하면 된다 스토리보드에서 CollectionView를 드래그 해서 넣고 해당 ViewC
카톡 채팅 리스트뷰를 똑같이 만들어보자 채팅 리스트 화면 캡쳐해서 아이콘이랑 광고 바 정도만 이미지 따옴! 💡 새롭게 알게 된 사실 콜렉션뷰는 상위에 다른 뷰로 감싸져 있게 되면 IBOutlet이 먹통이 되는 것 같다. 버티컬 스택뷰로 광고 이미지랑 레이아웃 자동으
UICollectionViewDelegateFlowLayout 그리드 내의 아이템에 대한 사이즈와 레이아웃을 담당하는 프로토콜! 모듈? minimumInterItemSpacing 네비게이션바 추가 세이프에리어 이상으로 뷰 키우기 가능 패딩 flowlayout
s
prepareForReuse() 메소드?
이미지 뷰 먼저 백그라운드로 넣어주고 페이지컨트롤 넣고 버튼도 넣고 콜렉션뷰도 넣음인스펙터에서 바꿀 수 있다! Scroll Direction 바꿔줬음 그리고 페이징도 enable 시켜주기!!콜렉션뷰는 최소 아이템 간의 간격이 디폴트로 10이 설정되어 있음인스펙터에
기존 구현은 간단하고 유연하다보통 Controller가 데이터를 받아와서, UI에게 변경을 알림점점 복잡한 구현이 생기면서, 기존 방식 사용시 이슈가 생길 때가 있음Controller, UI가 들고 있는 데이터 사이에 일치하지 않을 때가 있음앱에서는 어느 것이 더 맞는
DiffableDatasource // Presentation, Data, Layout diffable datasource presentation snapshot Data compositional Layout layout 이걸 이해하려면 알아야되는 개념
DiffableDataSource 사용해서 크기가 제각각인 CollectionViewCell을 표현해보자
UIColor를 배열로 만들어줬다다른 특이점은 없다!전역으로 설정할 때 항상 강제해제 해주나...?!snpashot에서 appendItems 할 때 toSection 지정 안해주면알아서 마지막 섹션에 아이템들 추가된다!layout 설정할 때 그룹 사이즈는 기본 비율 (
💡 네비게이션과 모달, 왜 알아야 해? 앱에서 제공해주고 싶은 기능은 많고, 각 기능은 여러 화면을 통해서 기능을 제공해줌 화면 전환간에 사용 context 깨지지 않게 잘 전달하고 싶음 결국, 사용자가 서비스 제공자의 의도를 잘 인지하게 도와주고, 앱 사용성을 쉽
한 스토리보드 안에 여러개의 스토리보드를 두다 보면 협업 시에충돌 발생 가능성이 있다. 새로운 스토리보드를 만들어보자뷰 컨트롤러도 연결! CollectionView의 DelegatedidSelectItemAt에서 이제 새로운 뷰를 띄워보자 새로 만들어준 story
섹션 2개 쓸거니까 두개 Item 배열 다 필요!! 섹션에서 CaseIterable 프로토콜 채택하면 모든 case 가져오는 게 가능해진다 섹션의 타이틀은 섹션 내부에 title이라는 computed property를 통해switch 구문으로 구현하자 snapsh
s
GenericCombine데이터 배출하는 친구구체적인 output 및 실패 타입을 정의함Subscriber가 요청한 것 만큼 데이터를 제공빌트인 Publihser인 Just, Futre가 있음Just는 값을 다루고Future는 Function을 다룸iOS 에서는 자동으
subscriber에게 값을 한번 뱉어내는 친구실패하지 않는 publisher에게 클로져의 형태로 subscriber를 붙입니다A protocol representing the connection of a subscriber to a publisher값을 저장하진 않고
기존 프로젝트를 Combine으로 바꿔보자
네트워크 이해하기 전에, concurrency(동시성)를 알아보자Concurrency: 여러 개의 작업이 동시에 일어나게 보이게 하는 것이것은 다른의미로는 어떤 작업들이 순서에 상관없이 동시에 수행될 수 있음을 얘기함각각의 작업들은 Thread에서 실행됨Main-Thr
앞에서 정리한 HTTP 방식으로 네트워크 할 수 있다iOS 네트워크 작업을 도와주는 것이 URLSession이다URLSession을 이용해서 서버와 소통URLSessionConfiguration.default디스크를 이용한 정보 저장을 하는 configuration그냥
configuration을 만들고 session을 만든다 url을 만들어주고 session의 dataTask를 만들어준 url로 수행하게되면 completionHandler에 dat, response, error 를 받아서 뭔가를 실행해줄 수 있다!
decodable 준수하지 않앗다고 자꾸 에러 뜬다...CodingKey에서 오타가 있었다... private(set) var user: UserProfile? 이거 무슨 뜻일지...해야하는 일들 목록. 이거를 구현해줘야겠다 먼저 imageView 둥글게 만들어줄
해야할 것들 SearchController collectionView 구성 bind() 검색된 사용자를 collectionView 업데이트하는 메소드 데이터 -> 뷰 검색된 사용자를 collectionView 업뎃 하는 거 사용자 인터랙션 대응
애플에서 가이드 하던 MVC패턴view viewController 이 둘을 view와 Controller 레이어로 나누어서 설명 했지만실제로 구현을 할때는 이둘이 거의 분리되지 않음따라서, 위의 그림과 같이 표현 되는 게 좀 더 현실적이다.이렇다 보니, View Con
모델과 뷰를 나눠줬다이제 뷰에 있는 친구들은 모델을 가지고 있으면 안된다!!새로운 뷰모델 클래스?! 를 만들어줌하나씩 이식해가자init 될때 items에 담을 수 있게 만들어줌viewModel에 옮겨보자 var viewModel: FrameworkListViewMod
코멘트 아웃되어 있는 부분 뷰모델로 옮겨주자그리고 network 리퀘스트 해주는 부분(Resource와 load 부분)도 따로 메소드로 파주면 될 거 같다그리고 로직들도 다 옮겨주자 보면 네트워크가 필요한 걸 알 수 있음SearchViewController에서 빼와주
둘다 띄워놓고 어떤 걸 가져가야될지 생각해보자네트워크는 왜 init 해주는지도 고민해봐야할 듯
프로젝트를 SwiftUI로 맞춰놓고 생성해준다새로운 view를 만들 땐 이제 SwiftUI로 만들어야한다!!TextView라는 이름으로,ButtonView라는 이름으로,ImageView라는 이름으로 새로운 뷰를 생성해보자 어떤식으로 구성하는지 보면 알 수 있듯이 클로
팟캐스트 플레이어 화면팟캐스트 정보(타이틀, 쇼이름)플레이 버튼(재생 여부에 따라 다르게 표시)현재 재생 상태표시 이미지(재생여부에 따라 다르게 표시) 상태 관리를 위해서 중복된 데이터가 여기저기….아,,, 뭐가 진짜야… 🤷♀️진짜 상태를 쉽게 관리하게끔
필요한 이미지 이름들이될 String들을 symbols 배열로 선언image들이 선택되면 바뀔예정이라 @State로 imageName을 선언해준다선택된 이미지에 대한 상태를 가지고 있는 진짜 데이터!버튼안에 담기는 내용도 마찬가지로 만들 수 있다.HStack으로 묶고
SwiftUI View로 Row부터 만들어보자 디테일들 추가해서 UI 제대로 그려주고! 스톡 모델 변수로 선언해주고 프리뷰될때 모델 초기화해준다!지금 stock.diff 뒤에 소수점들이 보인다 String format하던거랑 비슷하게 specifier 파라미터를 사
swiftUI 파일로 FrameworkCell을 만들어준다//.previewLayout(.fixed(width: 160, height: 250))이거는 안먹힌다... 셀처럼 프리뷰되는걸 보고 싶은데 UIKit : UICollectionViewData, Presenta
IBOutlet과 IBAction을 연결하자그리고 duration 이라는 변수도 선언해줬다(시간 선택되면 몇초인지 담아둘 용도) datePicker의 프로퍼티 countDownDuration은 현재 몇초로 설정이 되어 있는지 알려준다=> duration에 넣어주면 되
SwiftUI 네비게이션 뷰 NavigationView 이용해서 네비게이션 뷰 + 컨트롤러 표현 NavigationView 가 감싸는 View에 navigationTitle 지정하기 네비게이션 push 를 구현하기 위해서 (상세뷰로 들어가기) Navigatio
SwiftUI에서는 Single source of truth에 의한 상태 관리가 중요함SwiftUI에서는 @State를 이용해서 Single source of truth 상태를 나타낼 수 있음@Binding을 통해서 Single source of truth 상태 정보에
Viewmodellistfavorite을 만들어봅시다ObservableObject 프로토콜을 준수하는 StockRankViewModel을 만들고모델을 @Published로 선언한다 기존에 있던 건 코멘트아웃하고 @StateObject로 스톡랭크 뷰모델 선언해줌 뷰모
여러 뷰에 걸쳐서여러 뷰에 더 걸쳐서여러뷰에 🔥더 걸쳐서중간 뷰에서는 Single Source of truth 필요없는 경우는?Reference(Object) 타입의 Single Source of truth 전달하기여러뷰에 🔥더 걸쳐서중간 뷰에서는 Single So
크게 다른점은 없다NavigationLink 처음 클로져는 목적지 작성해주는 곳 데이터 전달해줄 파일 만들었다!ObservableObject 채택하고 필요한 변수들 퍼블리쉬 해줌처음 시작 관리하는 스트럭트로 와서@StateObject를 방금 만들어준 모델로 선언하