IOS

    [SwiftUI] SwiftUI에서 Custom View 만들기 : State와 body를 사용하는 방법

    [SwiftUI] SwiftUI에서 Custom View 만들기 : State와 body를 사용하는 방법

    SwiftUI에서 Custom View 만들기 Custom View는 재활용 가능한 View의 단위이다. SwiftUI에서는 간편하게 Custom View를 만들 수 있는 방법을 제공한다. 아래에서 구성요소부터, 만들고 사용하는 방법까지 살펴보자. Custom View의 구성요소 SwiftUI에서 재활용 가능한 CustomView를 만들기 위해서는 View 타입의 struct와 State와 Body 두가지가 필요하다. State : CustomView의 UI State를 저장하는 변수. 이 값이 바뀔 때 Custom View가 업데이트 된다. State가 선언되지 않은 변수는 변경이 불가능하다. Body : CustomView의 UI를 그려주는 부분. 타입은 항상 some View 여야 하며, 이 부분에..

    [Swift] ViewController의 lifecycle methods 알아보기

    ViewController의 lifecycle methods viewController은 화면에 보여지기 전부터 화면에서 사라질 때까지 다음 5단계의 lifecycle 메서드들을 수행한다. viewDidLoad ↓ viewWillAppear ↓ viewDidAppear ↓ viewWillDisappear ↓ viewDidDisappear 각 단계에 맞는 작업을 수행하는 것이 매우 중요하다. 아래에서 각 메서드가 언제 불리는지 알아보도록 하자. viewDidLoad view가 로드됐을 때 한 번만 불린다. 이 단계에서는 view를 초기화 하는 작업을 한다. viewWillAppear view가 사용자에게 보여지기 전에 불린다. UI 컴포넌트의 visibility를 조절하거나 할 때 유용하다. 이 메서드는 ..

    [Swift] TableView 이용해 화면에 목록 표시하기

    [Swift] TableView 이용해 화면에 목록 표시하기

    TableView란? TableView는 화면에 목록을 표시하기 위한 UI구성요소이다. TableView의 구성요소 TableView는 TableView와 TableViewCell 두가지로 이루어진다. TableView: TableViewCell을 여러개 담기 위한 컨테이너 TableViewCell: 하나의 아이템 TableView 만들기 1. TableView는 TableView에 TableViewCell을 넣는 형태로 만들어진다. 따라서 TableViewCell을 만들 수 있도록 다음과 같이 구조를 만들도록 하자. 이 때 TableViewCell의 Identifier은 ResuableCell이 된다. 2. 우리는 UITableView의 각 아이템을 만들기 위해 UITableViewDataSource ..

    [Xcode] Package Manger 사용해 라이브러리 추가하기

    [Xcode] Package Manger 사용해 라이브러리 추가하기

    Package Manager란? Package Manager란 iOS에서 라이브러리(패키지)를 추가하기 위해 Xcode에서 제공하는 Tool이다. Package Manager 이용해 패키지 추가하기 1. File-Add Packages를 클릭한다. 2. 추가하고 싶은 Package를 github이나 package 제공자에서 찾아 추가한다. 이 글에서는 firebase sdk를 추가하였다. 3. 버전을 선택한다. 보통 구체적인 버전 명을 명시할 수 있는 Exact Version을 사용한다. 4. 설정이 다 끝났으면 Add Package를 누른다. 5. 로딩이 끝날 때까지 기다린다. 6. 하나의 경로에서 여러 라이브러리를 제공하는 경우 다음과 같이 원하는 라이브러리를 선택하라는 창이 뜬다. 여기서 원하는 라..

    [iOS Build] CocoaPods Homebrew이용해 간단히 설치하기

    [iOS Build] CocoaPods Homebrew이용해 간단히 설치하기

    CocoaPods 설치하기 CocoaPods를 설치하려고 이 문서 저 문서를 뒤지면서 설치를 진행했는데 오류가 생겨서 해결 방법을 찾아 글을 쓰게 되었다. 인터넷 상에는 gem을 사용해 install하는 방법만 있는데, 이 방법으로 install하면 잘못 설치되어 pod install 명령어를 실행 시 오류가 발생한다. 이에 따라 HomeBrew를 이용해 한 번에 설치하는 방법에 대해 살펴보고자한다. Homebrew 설치하기 Homebrew는 터미널에서 다음 명령어를 실행해 설치할 수 있다. /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 다음 페이지를 참조하길 바란다. https:..

    [Swift] 위치 권한 요청 방법 및 요청 문구 변경 방법 알아보기

    [Swift] 위치 권한 요청 방법 및 요청 문구 변경 방법 알아보기

    위치 권한 요청 방법 iOS 의 위치 권한 요청은 다음의 3단계로 이루어진다. CoreLocation 모듈 추가 CLLocationManager 초기화 CLLocationManager에서 location 권한 요청 import CoreLocation // 1. CoreLocation Module Import class [클래스명]: UIViewController { let locationManager = CLLocationManager() // 2. CLLocationManager 초기화 override func viewDidLoad() { super.viewDidLoad() locationManager.requestWhenInUseAuthorization() // 3. Location 요청 } 위치 권..

    [Swift] extension 키워드 이용해 타입 기능 확장하기

    클래스 기반 모델의 문제점 클래스 기반 모델은 보통 protocol(interface)를 확장하는 방식으로 함수를 만들어낸다. 하지만, 문제는 하나의 클래스는 하나의 protocol만을 확장하지 않는 경우가 많다는 것이다. 특히 iOS의 ViewController의 경우는 여러 기능이 들어가야 하기 때문에 여러 protocol을 상속받는다. 하지만 여러 프로토콜을 상속받게되면 하나의 클래스에 여러 함수를 구현해야 되기 때문에 클래스가 복잡해진다. 예를 들어 사람 클래스에 커피샵 직원 프로토콜과 Programming을 위한 프로토콜을 상속한다고 해보자. 그러면 다음과 같이 Person class가 매우 커진다. class Person : CoffeeShopEmployee, Programming{ func ..

    [Swift] protocol이란 무엇인가?

    [Swift] protocol이란 무엇인가?

    protocol이란? protocol은 타입으로 Swift의 class나 struct의 행동(func)을 정의하는 역할을 한다. *Java, Kotlin, Dart, C#의 interface와 같은 역할을 한다. 보통 프로그래밍에서의 protocol(프로토콜)이라 함은 프로그램(컴퓨터) 간에 데이터를 교환 방식을 정의하는 규칙을 말한다. 즉, 프로토콜은 코드 구현이 없는 규칙일 뿐이다. 따라서 프로토콜을 사용하는 프로그램에서 프로토콜을 보고 구현을 한다. Swift에서도 마찬가지로 protocol은 행동을 정의하기만 할뿐 구현을 하지 않는다. protocol의 특징 protocol은 행동을 정의한다. protocol은 타입이다. protocol은 행동을 정의한다 예를 들어 Shop protocol이 있다..

    [iOS Assets] Custom Color에 Dark Mode를 지원하는 방법

    [iOS Assets] Custom Color에 Dark Mode를 지원하는 방법

    iOS Custom Color 1. Assets 에서 + 버튼을 누른 후 Color Set을 누른다. 2. Appearance- Any, Light, Dark로 변경한다. 3. 아래 창이 나오면 Dark를 클릭한다. 4. Dark Color의 RGB 값을 조절해서 Dark모드일 때 보여질 색상을 설정한다. 5. Label의 Color 탭에서 위 커스텀 Color을 가져올 수 있다. 다른 Color 리소스와 가져오는 방법이 같다.

    [Swift] Struct와 Class의 차이는 무엇인가?

    [Swift] Struct와 Class의 차이는 무엇인가?

    Struct와 Class의 차이 Struct와 Class는 데이터 저장 방식, 가변성(Mutability), 상속 측면에서 다르다. 첫 째, Struct는 그 자체로 값으로 저장이 되지만 Class는 변수에 객체에 대한 주소값을 저장한다. 둘 째, Struct는 기본적으로 Immutable하지만 Class는 Mutable하다. 때문에 Struct의 내부 변수값을 바꾸기 위해서는 mutating이라는 강제로 mutability를 부여하는 접두어를 붙여야 한다. 셋 째, Struct는 상속이 불가능하지만, Class는 상속이 가능하다. 이는 불변성의 연장선으로 볼 수 있다. 데이터 저장 방식 struct의 데이터는 그 자체가 값으로 저장이 된다. 따라서 기존 struct가 새로운 struct에 할당되면 기존..