분류 전체보기 93

[ Swift ] Serialization이란?

검색을 통해 공부한 내용을 정리한 글입니다. 따라서 부정확할 수도 있고 추후 추가 공부를 통해 내용이 변경될 수도 있습니다. Serialization이란? Serializtion을 번역하면 '직렬화'이다. 직렬화란 간단하게 말하자면 어떤 데이터를 다른 형태로 변환하는 것을 말한다. 이 형태가 직렬적(시간 순차적)이라 직렬화한다고 표현한다. 조금 더 길게 설명하자면 데이터 구조 또는 객체의 상태를 추후에 저장될 수 있거나 전송될 수 있는, 또는 재구성될 수 있는 형식으로 변환하는 과정이다. 이에 반대되는 개념은 Deserialization이다. 번역하면 '역직렬화'로, 어떠한 형태로 변환된 것을 우리가 사용하는 형태로 변환하는 것을 의미한다. Serialization의 예시를 보면 조금 더 와닿는다. 앱 ..

Swift 2023.01.18

[ iOS ] 공유하기 기능 구현 - UIActivityViewController

목차 UIActivityViewController 생성하기 excludedActivityTypes를 사용해 필요없는 앱 제거 completionWithItemsHandler 처리하기 UIActivityViewController의 또 다른 Instance Property: allowsProminentActivity Apple에서 기본적으로 제공하는 '공유하기' 기능이 있다. 메일, 메모장, 클립보드 복사 등을 사용할 수도 있고, 카톡, 트위터, 페이스북 등 타 앱에서 공유기능을 지원한다면 개발자가 따로 구현할 필요없이 자신의 앱에서 타 앱으로 데이터 공유가 가능하다. '공유하기'는 UIActivityViewController 클래스를 통해 구현할 수 있다. UIAvtivityViewController는 U..

iOS 2023.01.03

[ iOS ] UIListContentConfiguration: CollectionView에 기본 Cell 사용하기 (14+)

공부 기록 TableView의 Cell에서 contentConfiguration 프로퍼티가 있듯이 CollectionView의 Cell에서도 contentConfiguration이 있다. 하지만 UITableViewCell에는 defaultContentConfiguration()이 있지만, UICollectionView에서는 해당 프로퍼티를 가지고 있지 않다. [ iOS ] contentConfiguration: TableView에 기본 Cell 사용하기 (iOS 14+) 공부 기록 UITableViewCell은 커스텀하지 않고도 cell을 구성할 수 있도록 여러 옵션을 제공한다. 가장 간단한 방법으로는 UITableViewCell의 프로퍼티 중 textLabel, detailTextLabel, imag..

iOS 2022.12.04

[ iOS ] contentConfiguration: TableView에 기본 Cell 사용하기 (iOS 14+)

공부 기록 UITableViewCell은 커스텀하지 않고도 cell을 구성할 수 있도록 여러 옵션을 제공한다. 가장 간단한 방법으로는 UITableViewCell의 프로퍼티 중 textLabel, detailTextLabel, imageView를 사용하는 것이였지만, iOS 14 이후부터는 이 프로퍼티들은 Deprecated 되어 더 이상 사용할 수 없다. 이것들을 대체하는 프로퍼티가 개발되었는데, 바로 contentConfiguration 이다. UIButton에서도 이와 유사한 프로퍼티인 configuration(iOS 15+)이 있다. 많은 Class들에서 Configuration이 등장하는 것으로 보아 개발자가 View 구성을 한 객체로 정리되며 재사용이 가능한 형태로 개발하도록 Apple에서 방..

iOS 2022.11.29

[ iOS ] UIButton.Configuration 사용하기(1) - Init, Title (iOS 15)

이 글은 iOS 15 버전을 기준으로 작성된 글입니다. UIButton.Configuration이란? iOS 2.0+ 부터 UIButton의 모양은 setTitle(:for:), setImage(:for:) 과 같은 UIButton의 인스턴스 메서드를 통해 설정할 수 있었다. 하지만 iOS 15+ 부터는 UIButton.Configuration이 추가되면서 새로운 방법으로 UIButton의 모양과 행동을 설정할 수 있게 되었다. Configuration은 이전에 사용하던 메서드들과 함께 사용할 수 있으며, 그 메서드들을 아예 대체할 수도 있다. Configuration의 장점은 기존 버튼의 모양과 행동을 수정하고 싶을 때 코드를 일일이 수정할 필요없이 새로운 Configuration을 구성한 뒤 UIBu..

iOS 2022.10.13

[ iOS 시행착오 ]Custom Switch

원하는 switch 디자인이 Apple의 기본으로 제공하는 UISwitch와 비슷하면서도 달라 커스텀을 진행했다. UISwitch testSwitch.transform = CGAffineTransform(scaleX: 2, y: 0.7) 처음에는 기본으로 제공하는 UISwitch의 크기를 줄여 해결하고자 했다. 하지만 정말 사이즈만 조정되어 원하는 UI로 구성할 수 없었다. 이후로도 UISwitch를 커스텀할 방법을 찾아보았지만 위와 같은 방법만 제시되어 다른 방법을 사용해야겠다고 판단했다. UIView switch를 원하는 디자인으로 만들기 위해 가장 근본적인 UIView를 커스텀하기로 했다. 바탕이 되는 bar와 작동되는 걸 보여주는 원형버튼으로 switch를 구분해 view를 생성했다. 이 두 개의..

개발 시행착오 2022.07.21

[iOS ] 데이터 전달 : (3/5) NotificationCenter로 전달하기

문제 다양한 방법으로 데이터 전달하기 1. Property로 전달하기 2. DelegatePattern으로 전달하기 3. NotificationCenter로 전달하기 4. Closure로 전달하기 5. 장단점 정리 NotificatonCenter로 전달하기 3 - 1 화면 전환 시 데이터를 전달하는 데에 여러가지 방법이 있는데, 그 중 NotificationCenter를 사용해 데이터를 전달하는 방법을 알아보자. NotificationCenter는 알림 발송 매커니즘(notification dispatch mechanism)이다. NotificationCenter는 알림이 게시(post)되면 등록된 옵져버에 알린다(broadcast). 알림을 받은 옵져버는 미리 설정된 메서드를 호출해 작업을 수행한다. ..

iOS 2022.06.21

[ iOS ] 데이터 전달 : (2/5) DelegatePattern으로 전달하기

문제 다양한 방법으로 데이터 전달하기 1. Property로 전달하기 2. DelegatePattern으로 전달하기 3. NotificationCenter로 전달하기 4. Closure로 전달하기 5. 장단점 정리 DelegatePattern으로 전달하기 2 - 1 화면 전환 시 데이터를 전달하는 데에 여러가지 방법이 있는데, 그 중 Delegate Pattern을 사용해 데이터를 전달하는 방법을 알아보자. 2의 ViewController에서 Delegate 프로토콜을 선언해 화면 전환 버튼의 액션함수에서 방금 선언해준 Delegate의 메서드를 호출한다. 이 메서드의 구현은 1의 ViewController에서 이루어진다. 메서드 호출 시 데이터를 인수로 넘겨주고, 구현 부분에서는 매개변수를 원하는 곳에..

iOS 2022.06.20

[ iOS ] 데이터 전달 : (1/5) Property로 전달하기

문제 다양한 방법으로 데이터 전달하기 1. Property로 전달하기 2. DelegatePattern으로 전달하기 3. NotificationCenter로 전달하기 4. Closure로 전달하기 5. 장단점 정리 Property로 전달하기 1 - 2 화면 전환할 경우, 1의 ViewContorller에서 2의 ViewController의 프로퍼티에 데이터를 할당해 전달하는 방법이다. 데이터 할당은 보통 화면 전환 시 이루어지며, 그때 생성하는 2의 ViewController 객체를 활용한다. 먼저 1에서 데이터를 입력할 TextField의 아울렛 변수(contentTextField)와 화면 전환을 할 Button의 액션 함수(tapNextButton)를 정의한다. import UIKit class Pr..

iOS 2022.06.20

[ iOS ] 사진 선택 시 번호 표기(넘버링) 구현 (+ collectionView)

공부한 내용을 정리한 글입니다. 문제 사진 선택 시 번호 표기(넘버링) 구현하기. 특정 사진 선택 해제 시 변경사항이 전체 번호 표기에 반영되어야 한다. 1. cell 내 버튼 선택 이벤트 2. 특정 사진 선택 목록에 추가하기 3. 특정 사진 선택 해제하기 4. 작업을 구현하면서 경험했던 오류 5. 개선할 만한 부분 1. cell 내 버튼 선택 이벤트 [ iOS ] cell 내 버튼 선택 이벤트 구현 (+ Delegate 패턴) 공부한 내용을 정리한 글입니다. 문제 사진 내 버튼 선택하기 1. cell 내 버튼 이벤트 발생시키기 UICollectionViewControllerDelegate의 collectionView(_:didSelectItemAt:) 메서드를 통해 collectionView C.. 8..

iOS 2022.06.15

[ iOS ] cell 내 버튼 선택 이벤트 구현 (+ Delegate 패턴)

공부한 내용을 정리한 글입니다. 문제 사진 내 버튼 선택하기 1. cell 내 버튼 이벤트 발생시키기 UICollectionViewControllerDelegate의 collectionView(_:didSelectItemAt:) 메서드를 통해 collectionView Cell의 선택 이벤트를 처리할 수 있다. 하지만 이 이벤트는 cell의 이벤트를 의미하지 cell 내 버튼의 이벤트를 의미하지는 않는다. 우리는 버튼이 cell 내에 있다는 것을 알고 있어야 한다. collectionView(_:didSelectItemAt:) 델리게이트에 특정한 인덱스의 아이템이 선택되었음을 알린다. 버튼에 선택 이벤트가 발생하면 해당하는 액션 함수가 호출되므로, 액션함수 내에 사진을 선택하는 작업을 구현하면 된다. 하..

iOS 2022.06.14

[ iOS ] URL 이미지 받아오기 + Alamofire

문제 Alamofire를 사용해 URL에서 이미지 받아오기 Unsplash와 같은 Open API나 서버에서 사진을 받을 경우 URL을 UIImage로 변경하는 작업을 처리해야한다. 보통 Data(constentsOf:)를 사용하지만 공식문서에서는 URLSession 사용을 권장한다. 오늘은 URLSession을 기반으로 만들어진 Alamofire를 통해 URL에서 이미지를 받아오자. [ iOS ] URL로 이미지를 받아 올 경우 Data(contentsOf:)를 사용하면 안 되는 이유 공부한 내용을 정리한 글입니다. 문제 네트워크 기반의 URL 이미지를 받아올 때 Data(contentsOf:)를 사용해도 될까? 1. Data(contentsOf:) NSData(constentsOf:)는 주어진 URL..

iOS 2022.06.08
728x90