iOS 13

[AutoLayout] LayoutGuide 활용하기

@MainActor class UILayoutGuide : NSObject 공식문서에 따르면 LayoutGuide는 AutoLayout과 상호 작용할 수 있는 직사각형 영역입니다. 이전에 'dummy view', 'placeholder view'와 같이 원하는 Layout을 위해 만들었던 View들 대신, 더 안전하고, 효율적인 직사각형 영역을 만들어주는 방식입니다. 주로 사용해본 UIKit의 Layout Guide 들은 간단하게 살펴보고, 직접 UILayoutGuide를 만드는 것을 중점적으로 글을 작성하겠습니다. 제공해주는 Layout Guides Safe Area layout guide 첫 번째로 가장 많이 사용하고 있는 Safe Area layout guide입니다. navigation bar, ..

iOS 2022.12.29

iOS ) Firestore 와 UITableView를 활용한 Paging 기능

최근 Firestore를 활용하면서 Paging기능을 구현할 일이 생겨 블로그 포스팅으로 정리해보려고 합니다. 우선, 첫째로 Firestore에서 데이터를 받아온 후 다음 Query를 저장. 둘째, Paging을 시작하는 시점. 셋째, 상태값 (isPaging, isLastPage) 관리. 저는 이렇게 3가지를 이번 기능을 구현하면서 중점적으로 생각했던것 같습니다. Firestore Firebase 공식 문서에서는 쿼리 커서로 데이터 페이지화 라는 섹션에서 구현 방법을 확인할 수 있습니다. 간단히 정리하면 start(), startAfter() 메서드와 limit() 메서드를 적절히 활용하여 구현할 수 있었습니다. 바로 코드로 확인해보겠습니다. Firestore Paging 구현 final class F..

iOS 2022.03.07

Create CollectionView Header with UICollectionReusableView

UICollectionReusableView를 활용하여 CollectionView의 Header를 만들어보도록 하겠습니다! UICollectionReusableView? 애플의 개발자문서에 따르면 "A view that defines the behavior for all cells and supplementary views presented by a collection view"라고 합니다. 해석을 해보자면 Collection View가 보여줄 Cell들과 Supplementary view들의 행동을 정의해주는 view라고 할 수 있겠습니다! 실제로 UICollectionViewCell도 UICollectionReusableView를 상속받고있습니다. Supplementary view 역시 이 UICol..

iOS 2021.07.21

Asynchronous Operations Unit Test (URLSession Unit Test)

Unit Test를 공부하던 중에 평소 Model을 만들어 Mock 데이터를 활용해서 Model이 알맞게 만들어졌는지에 대한 Unit Test만 작성하다가, URLSession data task를 잘 가져오는지 확인하려고 Unit Test를 작성하던 도중 그냥 URLSession 만을 사용해서는 Unit Test 도중에 데이터를 잘 받아왔는지 확인하기도 전에 Unit Test가 Success했다고 나오는 현상을 발견했습니다. 그래서 이번 포스팅에서는 비동기 작업을 Testing하는 방법에 대해 알아보겠습니다. 우선 저는 애플의 공식 문서인 'Testing Asynchronous Operations with Expectations' 라는 Article을 참고하여 공부를 해 보았습니다. XCTestExpec..

iOS 2021.01.27

iOS Application Life Cycle

이번 포스팅에서는 iOS의 Application Life Cycle에 대해서 공부한 부분을 정리해 보도록 하겠습니다. 😄 애플 공식문서의 'Managing Your App's Life Cycle' 이라는 Article을 주로 살펴 볼 예정입니다. 우선! iOS 13 이후 버전 부터는 Scene이라는 개념이 만들어 지고, UISceneDelegate 개체들을 Scene-based 앱의 life-cycle 이벤트에 대응하기 위해 사용하고 있습니다. Scene은 하나의 프로세스에 여러개가 존재할 수 있고, Scene 하나하나마다 Life Cycle을 따로 가지고 있기 때문에, 하나의 앱에서 여러개의 Scene이 각각 다른 상태에서 동작이 가능합니다. 예를들어, 어떤 Scene 하나는 Foreground상태에서..

iOS 2021.01.18

App Delegate / Scene Delegate Method

iOS 프로젝트를 제일 처음 만들면 AppDelegate.swift, SceneDelegate.swift파일 이렇게 두가지가 생성됩니다. 여기 내부에 있는 메서드에 대해서 한번 알아보겠습니다! App Delegate func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. return true } 우선 didFinishLaunchingWithOptions 메서드입니다. App Delegate의 역할은 ..

iOS 2021.01.15

iOS UITableView

UITableView? UITableView는 우선 UIScrollView를 부모 클래스로 가진다. 'Table views on iOS display a single column of vertically scrolling content, divided into rows. ' iOS의 TableView는 행으로 분할된 수직으로 스크롤을 할 수 있는 단일 열을 보여주는 View입니다. 이 각각의 행은 하나의 Content를 포함할 수 있다. 이 각각의 행은 UITableViewCell입니다. UITableViewCell? 'The visual representation of a single row in a table view.' UITableViewCell은 Table View의 단일행의 시각적인 표현입니다..

iOS 2020.12.23

ScrollView AutoLayout(with Code)

UIScrollView 의 AutoLayout 설정에 대해서 알아보겠습니다. ScrollView 내부의 View들을 정의할 MyScrollView Class와 MyScrollView를 정의할 ViewController 이렇게 두개의 Class에서 진행해 보겠습니다. 우선 ScrollView! ScrollView에는 하나의 Vertical StackView와 색이 다른 3개의 UIView를 넣으려고 합니다. private let verticalStackView: UIStackView = { let stackView = UIStackView() stackView.translatesAutoresizingMaskIntoConstraints = false stackView.axis = .vertical stack..

iOS 2020.12.22

Unit Test (XCTest)

Unit Test XCode에서는 Unit Test 또는 단위 테스트라고 하는 기능을 제공하고 있습니다. XCode에서 Unit Test를 하여 테스팅을 자동화하여 테스팅에 사용되는 시간을 절약할 수 있으며, 버그를 사전에 예방할 수 있고, 이러한 테스팅 과정을 통해서 코드를 보다 더 최적화 시킬 수 있게 도와줍니다. XCTest Unit Test에서 주로 사용하는 Framework중 하나인 XCTest를 살펴보겠습니다. XCTest란 XCode 프로젝트에서 Unit Test를 만들거나 실행하고, Performance Tests, UI Tests를 하는데에 사용하는 프레임워크입니다. Swift Package를 활용하여 간단한 Unit Test를 해보겠습니다. 우선 Swift Package를 생성하면 So..

iOS 2020.12.16

Auto Layout (Constraints)

View와 View사이에 Constraints를 주어 설정해 보자! Contstraints는 View와 View사이의 관계를 정의해 줍니다. 스토리 보드에서 설정하는 방법부터 알아보겠습니다, 🧑🏻‍💻 스토리보드의 우측 하단에 Add New Constraints가 있습니다. 여기서 다양한 Constraints 설정을 해줄 수 있습니다. 이 Auto Layout은 이렇게 계산될 수 있습니다. Attribute는 Top, Bottom, Leading, Trailing같은 것을 뜻하고, Multiplier는 비율, Constant는 간격을 뜻합니다. 그림으로 보겠습니다. 이 그림에서 저 빨간색 간격 부분이 20이라고 하면 공식을 나타내면 다음과 같습니다. View.top = 1 x SuperView.top + ..

iOS 2020.12.08