제네릭은 Swift에서 가장 강력한 기능 중 하나이다. 실제로 Swift 표준 라이브러리 또한 수많은 제네릭으로 구성되어 있는데, 우리가 흔하게 사용하는 배열과 딕셔너리도 제네릭 타입이다. 제네릭이 무엇일까? 제네릭이란 모든 타입에서 동장할 수 있는 더 유연하고 재사용 가능한 함수와 타입을 작성할 수 있도록 하게 해주는 기능이다. 즉, 제네릭을 사용하면 중복을 피하고 명확하고 추상적인 방법으로 그 의도를 표현할 수 있는 코드를 작성할 수 있고 코드를 유연하게 작성할 수 있다. 제네릭 문법 제네릭을 사용하기 위해서는 를 사용하면 된다. 제네릭 함수 스위프트 공식문서에 있는 문제를 예를들면 func swapTwoInts(_ a: inout Int, _ b: inout Int) { print("변경 전 : \..
사건의 발단 xib, 스토리보드 없이 onlyCode로 UI를 구현하는 공부를 하고 있었다. 전에 xib를 이용해서 구현한 커스텀 레이아웃을 onlyCode로 짜던 도중 문제가 발생했다. 죽어라 스크롤 해도 스크롤이 안되는 진짜 진짜 이해가 안 가는 문제 발생 ☹️ 코드가 잘못됐나 하고 진짜 계속 다시 보고 다시 읽는데도 내 코드에는 전혀 문제가 없었다. (물론 내 생각) 일단 침착하고 deburg view hierarchy를 켜서 문제를 찾기 시작했다. 컬렉션 뷰에서 문제가 있는 것 같아서 컬렉션 뷰부터 확인했는데 Scrolling Enabled!! 분명히 스크롤은 허용되어 있다.. 그래서 다시 한번 컬렉션 뷰 부분 코드를 봤다. 수평 스크롤을 원했기에 scrollDirection은 horizontal..
그동안 collectionViewFlowLayout으로 단일 섹션, 수직 방향 레이아웃만 만들었었다. 유튜브 뮤직이나 스포티파이 등 여러 슈퍼앱을 보면 위의 사진과 같이 여러개의 섹션에 수직, 수평 방향의 레이아웃이 한번에 들어있는 것을 볼 수 있다. 그래서 이번엔 그런 커스텀 레이아웃을 구성해보려고 한다. 어떻게 만들건데 ? 내가 생각한 방법은 뷰 컨트롤에 메인 테이블 뷰를 만들어서 테이블 뷰1(수평 방향 레이아웃), 테이블 뷰2(수직 방향 레이아웃)을 넣고 각각의 테이블 뷰에 컬렉션 뷰를 넣어서 구현하려고 한다. 과정 일단 메인 뷰 컨트롤러에 테이블 뷰를 만들어 줬다. 메인 테이블 뷰에 넣어줄 테이블 뷰1(수평 방향 레이아웃), 테이블 뷰2(수직 방향 레이아웃)를 xib로 만들고 정의했다. 이 테이블..
아까부터 막 xcode에서 이리저리 만지다가 갑자기 든 생각 🤔 지금까지는 뷰와 Safe Area와의 관계에서 제약조건을 걸어서 오토 레이아웃을 만들었다. 그럼 뷰가 여러개 있을 때 뷰와 뷰끼리의 관계에서 제약조건은 어떻게 할 껀데? 라는 생각이 뽝!! 하고 들었다. 🔥 역시나 애플 공식문서부터 뒤져봤다. "Examining and Editing Constraints" = "제약조건 검사 및 편집" 뭔가 감이 왔다. First Item, Relation, Second Item, Constant 등등 여러 조건이 있는데 보니까 First Item, Second Item, Relation 아이템과 관계에 관련한 조건인가보다 또 Constant 등 거리와 관련된 조건도 있는 것 보니 아마 여기서 설정할 수 있..