UICollectionViewLayout 콜렉션 뷰의 레이아웃 정의를 위한 추상 클래스. 직접 사용하기 위한것이 아닌 하위 클래스를 사용하기 위한 것 UICollectionViewFlowLayout UICollectionViewLayout을 상속받은 라인 기반 레이아웃 시스템 UICollectionViewFlowLayout 기본지식 CollectionView의 스크롤 방향에 따라 셀들을 스크롤 방향의 수직이 되도록 배치. 셀들을 배치 할 때 더이상 배치할 공간이 없으면 다음 줄로 넘어가서 배치. 이렇게 흐르듯이 셀들을 배치해 flowLayout이라함. Line Spacing : 줄들간의 간격 Inter-Item Spacing: 항목간의 간격 아래 사진은 레이아웃이 Vertical일때. Horizontal..
layoutMargins 뷰의 경계선과 컨텐츠 사이의 공간. 웹에서의 padding과 같은 역할. UIEdgeInsets 타입. 스토리보드에서 Editor -> Canvas -> Layout Rectangle을 통해 확인 가능. Constrain to margins 오토레이아웃을 margin에 맞출것인지, superView의 경계선에 맞출것인지를 체크하는 옵션 subView를 추가하고 constraints를 파란뷰의 constraints를 상하좌우 0,0,0,0으로 주면 superView인 붉은색 뷰의 margins를 기준으로 레이아웃이 잡힌것을 확인 constrain to margins를 끈채로 constraints를 상하좌우 0,0,0,0으로 주면 View의 경계선을 기준으로 레이아웃이 적용 UIEd..
각 화면마다 addSubView를 통해 로딩 뷰 화면을 일일히 붙여주는것은 너무 귀찮아서, 어떤식으로 하면 함수 하나를 호출하는 것만으로 로딩뷰를 띄울수 있을까 고민했습니다. 현재 생각나는 방법은 protocol의 extension을 이용해 현재 화면을 인자로 전달하고, addSubView로 화면을 추가하는 방법과 최상위뷰에 addSubView를 하여 화면을 추가하는 방법을 생각했습니다. 참고로 여기서 말하는 최상위 뷰는 아래의 view hierarchy에서 맨 앞에 위치한 뷰가 아닌, 가장 뒷쪽에 위치한 View를 말합니다. 왜 뒷쪽에 있는 view를 최상위뷰라고 하냐면 뷰를 추가하면 아래와 같이 최상위 뷰에서 뷰를 추가를 하면 아래 사진처럼 탑다운 형식이 되기에 가장 뒤에있는 뷰를 최상위 뷰라고 하는..
Notifications란? 정보를 브로드캐스팅하고, 브로드캐스트를 구독하기 위한 디자인 패턴입니다. 즉 일대다수의 이벤트를 전달 할 때 유용하게 사용 할 수 있습니다. Notifications의 구성 Notification : NotificationCenter에 등록된 관찰자들에게 브로드캐스트되는 정보를 위한 컨테이너 NotificationCenter : 관찰자를 등록, 알림을 송신하는 매커니즘 NotificationQueue: 알람을 등록, 자신이 원할때 알람을 송신해줄 수 있도록 해주는 알림 버퍼 NotificationCenter 매커니즘 NotificationCenter을 통해 특정 알람을 받을 Observer를 추가 하고, Post를 통해 해당 Observer에 알람을 보낼 수 있습니다. 우측에..
에러 내용 : Assertion failed: This is a feature to warn you that there is already a delegate (or data source) set somewhere previously. The action you are trying to perform will clear that delegate (data source) and that means that some of your features that depend on that delegate (data source) being set will likely stop working. If you are ok with this, try to set delegate (data source) to `nil` i..
진행 하고 있는 프로젝트에는 API가 2가지가 들어갑니다. 처음 화면에 들어갔을때 추천 이미지를 불러오는 API와 이미지 검색을 하는 API가 사용됩니다. 기존 클린 아키텍쳐를 참고하여 프로젝트를 진행하고 있는데, 네트워크 레이어를 나눈 부분은 소스코드도 이해하기 어렵고, 왜 이런식으로 나누는지도 이해하기 어려웠습니다. 그래서 이런 어려움 없이 추상화를 제공해주는 Moya를 사용해보기로 했습니다. Moya란? Moya는 Alamofire를 이용할 때 추상화한 네트워크 계층을 작성할 필요없이 사용자가 매우 단순하게 캡슐화를 할 수 있고 쉽게 사용하게 해주는 라이브러리 입니다. 예를 하나 들어봅시다. 일반적으로 네트워크 계층을 작성할 때 아래와 같이 NetworkManager, APIManager등등 이라 ..