[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

🍎 Apple/UIKit 9

[UIKit] 선언형 레이아웃 라이브러리 SwiftLayout

https://github.com/ioskrew/SwiftLayout GitHub - ioskrew/SwiftLayout: A swifty way to use UIKit A swifty way to use UIKit. Contribute to ioskrew/SwiftLayout development by creating an account on GitHub. github.com 안녕하세요! 오늘은 SwiftLayout이라는 오픈소스 라이브러리를 소개해보려 합니다. SwiftLayout은 한마디로 정의하면 UIKit에서 SwiftUI 같은 선언적 레이아웃 관리를 할 수 있도록 도와주는 라이브러리입니다. if kakao에서 발표된 영상을 간단하게 정리한 게시글이니, 관심이 있으신 분은 구현자분들께서 직접 설..

🍎 Apple/UIKit 2022.12.14

[UIKit] UITableView 기초부터 다시 살펴보기

안녕하세요 이누입니다. UITableView, UICollectionView 둘다 상황에 따라 많이 사용하는 View죠. 그런데 저는 지금까지 프로젝트에서 적용하기에만 급급해서인지 사용과정 및 원리가 머릿속에서 정리되어 있다는 느낌이 없었습니다. 그래서 이번기회에 둘 다 정리를 해보려고 합니다. 오늘은 먼저 TableView입니다! 이번 포스팅은 쓰다보니 좀 길어져서 목차도 첨부합니다. 아래 순서대로 설명할거예요. UITableView란? UITableView 생성하기 UITableViewCell, UITableViewDataSource Cell Reuse? UITableViewDelegate (이하 내용은 모두 코드베이스를 기준으로 설명되어 있습니다.) 1. UITableView란? iOS의 UITab..

🍎 Apple/UIKit 2022.04.17

[UIKit] View Drawing Cycle

참고 https://tech.gc.com/demystifying-ios-layout/ https://jeonyeohun.tistory.com/336 View의 Drawing Cycle이란 View가 로드되거나 변경이 생겼을 때 이를 화면에 적용시켜 그리는 과정을 뜻합니다. 이들은 즉각적으로 처리되지 않고, Main Run loop에 의존적인 형태를 가집니다. Main Run loop iOS의 이벤트는 각 스레드마다 존재하는 Run loop를 통해 처리됩니다. 발생하는 이벤트들이 모두 시스템상의 이벤트큐에 들어가고, Run loop가 돌아가면서 이들을 하나씩 가져와 처리하는 방식입니다. 그 중에서도 Main Run loop는 사용자의 입력 이벤트를 처리하고 적절한 응답을 트리거하는 역할을 수행합니다. Up..

🍎 Apple/UIKit 2022.03.16

[UIKit] ViewController Life Cycle

안녕하세요 이누입니다! 여러분은 ViewController의 Life Cycle에 대해 잘 알고 계신가요? 저는 잘 알다가도 헷갈리거나 모르는 부분이 등장해서 당황스러울 때가 많더라구요. 그래서 오늘은 이를 포함해 전체적인 ViewController의 Life Cycle에 대해 정리해보았습니다. (2022.03.16 내용수정) 가장 먼저 init에 대해 정리하려고 살펴보니 nib, xib 파일에 대한 언급이 있더라구요. 그래서 이 부분부터 정리하고 넘어갑니다. cf. nib란? nib : NeXT Interface Builder (binary 기반), 인터페이스 빌더에서 생성한 객체들을 저장하는 파일입니다. UI를 구성하는 객체들과 이들의 세부설정, 각 객체들간의 관계 등을 포함합니다. xib : XML..

🍎 Apple/UIKit 2022.02.12

[UIKit] Multiple Gesture Recognizer 처리하기

안녕하세요 이누입니다. 🐶 하나의 View에 대해 여러 Gesture Recognizer가 등록되어 있는 경우 원하는 대로 처리되지 않는 경우가 종종 있습니다. 특정 Gesture로 인해 먼저 처리해야 될 다른 Gesture가 무시되는 경우도 많고, 동시에 처리되길 원하는 Gesture가 동시에 동작하지 않는 경우가 그 대표적인 예시입니다. 따라서 오늘은 애플 개발자 문서에 등록된 Article인 Coordinating Multiple Gesture Recognizers를 기반으로 하나의 View에 등록된 여러 Gesture Recognizer들의 작업을 원하는대로 처리하는 방법을 알아보겠습니다. OverView Gesture recognizer는 입력된 터치 이벤트를 개별적으로 추적하지만, UIKit은..

🍎 Apple/UIKit 2022.02.05

[UIKit] Compositional Layout Example from Apple Sample Code (2)

1편에 이어서 작성! https://inuplace.tistory.com/1038 [UIKit] Compositional Layout Example from Apple Sample Code (1) Compostional Layout을 조금 더 잘 활용하고 싶어서 학습자료를 찾던 중 Apple Sample Code에서 너무 좋은 레퍼런스를 찾아서 이를 하나씩 정리해본 자료입니다. 🙃 https://developer.apple.com/documentation/ui.. inuplace.tistory.com Decorate Sections with Backgrounds let sectionBackgroundDecoration = NSCollectionLayoutDecorationItem.background( e..

🍎 Apple/UIKit 2022.01.18

[UIKit] Compositional Layout Example from Apple Sample Code (1)

Compostional Layout을 조금 더 잘 활용하고 싶어서 학습자료를 찾던 중 Apple Sample Code에서 너무 좋은 레퍼런스를 찾아서 이를 하나씩 정리해본 자료입니다. 🙃 Compositional Layout? Compositional Layout은 유연한 시각적 배열로 아이템들을 결합할 수 있는 레이아웃 객체이다. 이는 CollectionViewLayout의 한 타입인데, 작은 구성요소를 전체 레이아웃으로 결합하여 컨텐츠에 대한 시각적 배열을 구축할 수 있다. Compositional layout은 시각적으로 뚜렷한 그룹으로 나뉘는 하나 이상의 Section으로 구성된다. 각 Section은 표시하려는 가장 작은 데이터 단위인 Item으로 구성된다. Group은 항목을 수평, 수직 또는..

🍎 Apple/UIKit 2022.01.17

[UIKit] Frame vs Bounds

개인적인 학습 정리를 위한 글입니다. 🧐 CGPoint : 위치를 표현하기 위한 구조체로 x좌표와 y좌표의 값을 CGFloat으로 가진다. CGSize : 크기를 표현하기 위한 구조체로 너비와 높이 값을 CGFloat으로 가진다. CGRect : 사각형의 위치(origin)와 크기(size)를 포함하는 구조체로, origin과 size를 각각 CGPoint와 CGSize로 가진다. UIView는 기본적으로 frame과 bounds값을 모두 가지는데, 이들은 둘 다 CGRect이다. 둘 모두 좌표와 크기를 가진다는 의미이다. 둘의 차이를 검색해서 찾아보면 Frame : SuperView의 좌표 시스템에서의 위치와 크기 Bounds : 자신만의 좌표 시스템에서의 위치와 크기 정도로 정의되는 경우가 많다. 이..

🍎 Apple/UIKit 2021.11.10

[UIKit] Diffable Datasource

기존의 DataSource와 UI는 각각 시간에 따라 변경되는 자신만의 버전(truth)을 가지고 있는데, 이것이 맞지 않으면 에러가 발생한다. reloadData를 수행하기 전까지는 중앙화된 하나의 버전(truth)가 존재하지 않아 에러가 발생하기 쉽다. reloadData를 수행하더라도 애니메이션없이 화면을 갱신하게 되기 때문에 사용자 경험을 저하시킬 수 있다. Diffable Datasource 개념 그에 따라 Apple에서 도입한 것이 Differble DataSource이다. performBatchUpdates()같은 복잡한 메소드를 사용하지 않고, apply()라는 하나의 메소드로 관리하게 된다. Snapshot: UI의 버전(truth)를 저장하는 개념이다. 각 section과 item에 대..

🍎 Apple/UIKit 2021.10.20