최근에 현대카드 DIVE 라는 앱의 레이아웃을 보고 다음과 같은 layout 를 가지는 오픈 라이브러리가 없나 찾아보았다. 현대카드 DIVE [개발하는정대리] : https://www.youtube.com/watch?v=B8-cTdaUuRQ VerticalCardSwiper 오픈 라이브러리를 사용해보자. GitHub - JoniVR/VerticalCardSwiper: A marriage between the Shazam Discover UI and Tinder, built with UICollectionView in Swift. A marriage between the Shazam Discover UI and Tinder, built with UICollectionView in Swift. - GitHu..
우리는 셀을 재사용하면서 특정 문제점을 경험해봤을 것이다. 바로 셀이 재사용될 때 발생하는 문제점이다. 원인 tableView(_:cellForRowAt:) delegate 메서드에서 사용하는 dequeueReusableCell(withIdentifier:for:) 메서드에서 셀이 resue 된다. 셀에 configure 되는 내용은 다르지만 셀 자체는 재사용되기 때문에 content 와 무관한 것들 예를들어 셀의 alpha , editing, selection sate 등까지 재사용하게 된다. 해결방법 prepareForeReuse() 를 통해서 재사용되는 셀의 속성을 초기화해주면 된다. // tableViewCell.swift override func prepareForReuse() { super.p..
iOS 환경에서의 동시성 프로그래밍 지원 종류 GCD (Grand Central Dispatch) : 멀티 코어와 멀티 프로세싱 환경에서 최적화된 프로그래밍을 할 수 있도록 애플이 개발한 기술입니다. Operation Queue : 비동기적으로 실행되어야 하는 작업을 객체 지향적인 방법으로 사용합니다. 동시성 프로그래밍과 병렬성 프로그래밍 동시성 프로그래밍 : 동시에 실행되는 것처럼 보이는 방식. 싱그코어에서 멀티스레드를 동작시키 위한 방식. 멀티태스킹을 위해서 여러개의 스레드가 번갈아가면서 실행. 병렬성 프로그래밍 : 물리적으로 정확히 동시에 실행되는 것을 말한다. 멀티 코어에서 멀티 스레드를 동작시키는 방식으로 데이터 병렬성(Data Parallelism)과 작업 병렬성(Task Parallelism..
먼저, UISearchController 에 대해서 읽어보자. iOS ) UISearchController (2) 핵심 로직) SearchBar에 Text가 업데이트 될 때 마다 검색 결과를 필터링 extension ViewController: UISearchResultsUpdating { func updateSearchResults(for searchController: UISearchController) { guard let text = searchController.searchBar.text?.lowercased() else { return } self.filteredArr = self.arr.filter { $0.lowercased().contains(text) } } } // 출처: https:..
대략 이런 내용을 모아서 뒀습니다. Alamofire 는 어떤 것을 기반으로 한 오픈 라이브러리일까? Alamofire 가 편한 이유? URLRequestFormParameterEncoder? JSONParameterEncoder? validate Response Handling URLSession의 Request와 Response URLSession은 다른 HTTP 통신과 마찬가지로 Request와 Response를 기본 구조로 가지고 있습니다. 먼저 Request는 URL 객체를 통해 직접 통신하는 형태와, URLRequest 객체를 만들어서 옵션을 설정하여 통신하는 형태가 있습니다. 다음으로 Response는 설정된 Task의 Completion Handler 형태로 response를 받거나, UR..
Alamofire 에 대해서 알아보기 전에 Foundation Framework 에 대해서 간단하게 알아보자 Foundation Framework 파운데이션 프레임워크는 데이터 처리, 네트워크 처리, 파일 처리와 같은 필수 기능을 제공합니다. 파운데이션 프레임워크에서 제공하는 클래스는 이름 앞에 NS를 붙입니다. 예를 들어, NSData, NSArray, NSURL은 파운데이션 프레임워크에서 제공하는 클래스입니다. 파운데이션 프레임워크를 사용할 때는 프로그램의 상단에 import 문을 입력합니다. import Foundation Alamofire 파운데이션 프레임워크에서는 API호출하기 위해 URLRequest객체를 만들어서 사용했지만, Alamoifire는 더욱 간편하게 접근 할 수 있도록 함. Ala..
이미지 크기에 따라서 동적으로 셀의 레이아웃을 설정하는 핀터레스트 레이아웃 구현해 보았다. 완성 코드 UICollectionViewDelegateFlowLayout 의 서브클래스인 PinterestLayout 생성. // PinterestLayout 에서 각 이미지 높이를 알 수 있도록 Delegate 생성. protocol PinterestLayoutDelegate: AnyObject { func collectionView(_ collectionView: UICollectionView, heightForPhotoAtIndexPath indexPath: IndexPath) -> CGFloat } class PinterestLayout: UICollectionViewFlowLayout { // delega..
Moya 의 기본을 다루는 글은 많은데 막상 다양한 경우의 get 과 post 요청에 대해서는 정보가 많지 않아서 이번 프로젝트에서 사용한 방법을 공유하고 한다. 그리고 내가 가진 궁금증에 대해서 알아가면서 진행될 포스팅이다. 🤔 궁금증 1 omoolen 프로젝트 중) 이번 프로젝트에서 서버에서 get 의 request body 에 데이터를 담아달라고 부탁했었는데(결국 존재하지 않기때문에 오류만 잔뜩 얻었다) 그 이유는 get 의 response body 로 정보를 보내주기 위함이었다. 하지만 post 통신에서도 response body 가 존재하기 때문에 post 의 request body 를 통해서 정보를 서버로 보내고 post 의 response body 로 정보를 얻기로 하였다. 위처럼 GET, ..
- Protocol
- Notification
- IOS
- RxCocoa
- 2022 KAKAO TECH INTERNSHIP
- async/await
- YPImagePicker
- configurable widget
- github
- WidgetKit
- WWDC22
- Swift
- OpenSourceLibrary
- SwiftUI
- Firebase
- MVVM
- Widget
- UserDefaults
- Algorithm
- APNS
- MOYA
- projectsetting
- containerBackground
- watchOS
- urlsession
- Objective-C
- CloneCoding
- 서버통신
- WWDC
- rxswift
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Total
- Today
- Yesterday