iOS/학습
iOS에서의 Frame vs Bounds
Frame : Super View 좌표계에서 View의 위치와 크기를 나타낸다. (여기서 Super View는 현재 View에서 한 칸 윗 계층 View를 일컫는 것이다.) Frame의 origin(x, y) frame이 나타내는 origin(x, y) 좌표는 Super View의 원점을 (0, 0)으로 놓고 원점으로부터 얼마나 떨어져 있는지를 나타내는 것. Super View의 원점이 곧 좌표의 시작점(0, 0)이 되는 것. 따라서 Super View의 좌표계에서 나타낸단 표현이 된다. SuperView의 원점으로부터 얼마 만큼 떨어져 있는가. Frame의 size(width, height) View 영역을 모두 감싸는 사각형으로 나타낸 것. 따라서 frame의 size는 View 자체의 크기가 아닌,..
Storyboard 에서 Generic Type 의존성 주입하기
기존 글에 매우 큰 오류가 있습니다!! https://minryul.tistory.com/21 이 글로 가주세요!!! StoryBoard를 사용하는 상황에서 ViewController(class) - ViewModel(struct) - Repository(struct) - Network(struct) 순으로 진행되는 Architecture에서 화면은 같으나 데이터를 받아오는 EndPoint가 다를 때 ViewModel과 ViewController는 그대로 유지하면서 Repository의 변경만으로 코드를 유지할 수 있을까? 의존성 주입 자체는 iOS 13 이상 버젼에서 func instantiateInitialViewController(creator: ((NSCoder) -> ViewController?..
translatesAutoresizingMaskIntoConstraints
translatesAutoresizingMaskIntoConstraints View에 AutoLayout을 코드로 작성할 경우 작성한 View의 translatesAutoresizingMaskIntoConstraints을 false로 만들어줘야 제대로 layout이 잡히게 된다. 항상 당연하다고 생각해 작성했는데, 왜 이 설정이 false로 되어야 제대로 layout이 잡히는지 알아보진 않은 것 같아 찾아보게 되었다. A Boolean value that determines whether the view’s autoresizing mask is translated into Auto Layout constraints. apple 공식 문서에는 autoresizing mask를 auto layout cons..
Diffable DataSource Infinite Scroll
Diffable에서 무한 스크롤을 구현해야하는데 구현하는 방법이 구글링해도 잘 안나옴;; 그래서 직접 구현하기로 했음. 보통 일반 CollectioView 에서 무한 스크롤을 구현하는 방법은 1. cell 개수를 Int.Max로 잡아서 스크롤 할 때마다 ReuseCell 로 구현하거나, 2. cell의 개수를 스크롤할 아이템에 배수로 정하고 cell을 스크롤할때마다 나머지 연산을 통해 보이는 cell을 강제로 이동시키는 방법으로 구현한다. 그래서 나도 2번 방법으로 구현하려하니 Compositinal Layout을 사용하면 Scroll Delegate를 사용하지 못하고, DataSource는 Diffable을 사용해서 구현하므로 많은 것이 제한 되었음;; 그래서 공식 문서를 보니 Compositional..