전체 글 227

[RxSwift] Combine Operator정리 - CombineLatest, Merge, Zip

Rx를 이용해서 개발하면서 Combine할때 유용한 Operator를 소개할게요 제 주관적으로 자주쓰이는것을 골라봤어요 Combine Operator는 말그대로 서로다른 스트림을 하나의 스트림으로 합쳐서 사용할 때 유용하게 쓰일거에요 CombineLatest 최초 두개의 스트림에서 각각 하나씩 이벤트를 받아온 뒤부터 두개의 스트림중 한쪽에서만 이벤트가 발생해도 새로운 스트림에 이벤트를 받아올 수 있음 그림이 이해가시나요? 처음보면 어려울수도있어요 숫자스트림과 알파벳스트림 이렇게 2개의 스트림이 존재하구요 숫자스트림은 1, 2, 3, 5 이벤트를 알파벳스트림은 A, B, C, D이벤트를 발생하죠? 처음에는 두스트림에 모든 이벤트가 있어야 새로운 스트림에 이벤트가 들어와요 1과 A가 차례대로들어오면 그때 새..

[Swift] Coordinator Pattern (2/2) - 기본동작

2020/05/17 - [iyOmSd/Title: Swift] - [Swift] Coordinator Pattern (1/2) - 기본원리 [Swift] Coordinator Pattern (1/2) - 기본원리 iOS 아키텍쳐의 종류는 다양해요 MVC, MVP, MVVM, VIPER, RIBs... 등등 많은데 MVC-C, MVVM-C 이러한 표현을 보신적도 있지않나요?? 여기서 C는 Coordinator를 의미해요 Coordinator란?? 화면의 흐름을 제어해주는.. nsios.tistory.com 전게시글에서 Coordinator가 어떤 원리로 돌아가는지 느낌을 살펴봤구요 이제 써먹을 수 있도록(?) 구현해볼게요 제가 생각한 Coordinator는 Navigation을 각 하나씩 가지고있어요 따라..

iyOmSd/Title: Swift 2020.05.22

[Swift] - Alamofire 5.1 변경된 통신 및 Json Dynamic Key

2019/10/27 - [iyOmSd/Title: Swift] - [Swift] Alamofire를 사용하여 API JSON 데이터 받기 (1/2) 예전에 Alamofire을 사용해서 통신했었는데요!! Swift버전도 올라가고, 더좋은 방향으로 발전해나가기 때문에 변경사항이 좀 있어요!! 사용법은 거의 비슷한데 살짝 바꼈더라구요 글작성시 사용한 Alamofire 버전은 5.1 이구요! struct LoginServiceImp: LoginServiceProtocol { func requestSignUp(form: SignUpForm) { var urlComponent = URLComponents(string: BaseURL.shared.getBaseString()) urlComponent?.path = R..

iyOmSd/Title: Swift 2020.05.18

[Swift] Coordinator Pattern (1/2) - 기본원리

iOS 아키텍쳐의 종류는 다양해요 MVC, MVP, MVVM, VIPER, RIBs... 등등 많은데 MVC-C, MVVM-C 이러한 표현을 보신적도 있지않나요?? 여기서 C는 Coordinator를 의미해요 Coordinator란?? 화면의 흐름을 제어해주는 역할 라우팅 VC관리 이런 단어들이 어울리겟네요 말이 좀 어렵지만.. 위 그림처럼 이런 원리라고 생각하면 쉽게 접근할 수 있어요 VC에 ViewModel를 의존성주입(DI)하듯 VC를 생성하고 필요한 의존성주입을 할 수 있어요 기존에는 Storyboard에서 VC를 관리하고 이동시켰어요 라우팅관리를 모두 Storyboard에서 했었죠 혹은 ViewController가 담당했죠 Coordinator를 사용하면 Coordinator가 VC의 이벤트도 ..

iyOmSd/Title: Swift 2020.05.17

[Swift] - JavaScriptCore(1/2)

이번 게시글은 JavaScript 언어를 iOS에 맞게 맵핑 해보는 기능에 대해서 공부를 하면서 적어봤어요 Apple에서 기본적으로 제공되는 Framework 에요 WKWebView에서 JavaScript를 이용한 맵핑기능이 몇가지 제공되는게 있어요 이미있는 API가 아니라 Core를 공부하는 거니까 JavaScript에 맞게 코드가 작동되도록 구현해볼거에요 사용하기에 앞서 꼭 알아야할 개념을 볼게요 JSVirtualMachine JS코드가 여기서 실행되고 JSVirtualMachine하나로 여러 스레드를 동시 실행할 수 없고 병렬처리를 하기위해서는 여러 가상머신을 사용해야한다고 해요 따라서 이것을 새로 생성하라는거죠 두 가지 주요 목적 JavaScript 동시 실행을 지원하는 것과 JavaScript와..

iyOmSd/Title: Swift 2020.05.16

[Swift] - TableView Header 및 Swipe Delete Action

TableView에서 Cell위에 View를 추가할 수 있는데 그거를 HeaderView라고 불러요 아래에 FooterView도 추가할 수 있어요 Section마다 각각 하나씩 추가할 수 있어요 이런 디자인이 있을 때 회색의 언더바 밑으로는 Cell이구요 위에는 HeaderView로 구현했어요 헤더뷰를 만들기는 간단해요! 바탕이될 뷰를 생성하고 그뷰에 각 컴포넌트들을 오토레이아웃 설정해주고 바탕뷰를 반환해주면 되구요 크기도 당연히 지정할 수 있어요 func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { let view = UIView() let underLine = UIView() underLine..

iyOmSd/Title: Swift 2020.05.12

[Swift] - Simple Carousel Effect CollectionView With Animation

최근에 애니메이션에 관심이 많아져서 계속 애니메이션 관련글만 올리고있네요 ㅎㅎ오늘 구현해볼 애니메이션이에요 대표적으로 음악앱을보면 앨범을 띄울때 이런 방식으로 띄우는걸 볼수있어요이런 효과를 Carousel이라고 불러요사전정의에는 '회전목마' 라고 하네요이 애니메이션을 포함해서 다양한 Carousel효과가 많더라구요 처음이기때문에자료를 찾아보면서 이것저것 해봤는데 좋은 코드가 있거나 방법이있다면댓글달아주세요 😁 시작해볼까요..! class ViewController: UIViewController { @IBOutlet weak var collectionView: UICollectionView! let cellSize = CGSize(width: 200, height: 500) var minItemSpaci..

iyOmSd/Title: Swift 2020.05.08

[Swift] - TabBar 애니메이션: CollectionView를 이용한 페이징

생각으로만 구현한 코드라서 완벽하진 않을거에요 좋은 방법이 있거나 틀린게 있다면 많은 피드백 부탁드립니다!! 글로 설명하기 조금 어려워서 이번에 구현할 애니메이션을 영상으로 먼저 볼게요!! 이런 상단 탭바 많이들 보셧죠 저도 보면서 와 이런건 어떻게하나... 궁금했어요 그래서 도전해봤어요 기본적인 레이아웃으로는 collectionView -> 상단tab부분 view -> 탭바 밑줄 collectionView -> page부분 이렇게 3개를 사용할거에요 우선 기본적인 Cell부터 구현해볼게요 상단 tab이될 Cell이에요 class TabBarCollectionViewCell: UICollectionViewCell { static let reuseIdentifier = "TabBarCell" @IBOutl..

iyOmSd/Title: Swift 2020.04.29

[Swift] - 화면전환 애니메이션 커스텀: UIViewControllerAnimatedTransitioning

ViewController간 이동할 때 화려한 애니메이션을 접한적이 있지않나요?? 이러한 애니메이션을 주면 앱이 이뻐보이기도 하구요..! 그래서 해보려고 도전했어요 먼저 쓰이는 함수를 알아볼게요 UIViewControllerAnimatedTransitioning(Protocol) view controller를 전환할 때 커스텀으로 애니메이션을 주고싶다면 이것을 구현하래요 UIPercentDrivenInteractiveTransition(Class) 한 컨트롤러와 다른 컨트롤러 간에 상호작용 애니메이션을 구동할 수 있게해주는 역할인것같아요 UIViewControllerTransitioningDelegate(Protocol) 뷰 컨트롤러 간의 전환을 관리하는 데 사용되는 Delegate같아요 이렇게만 보면 ..

iyOmSd/Title: Swift 2020.04.25

[Git] 깃저장소에 프로젝트 올리기

개발을 할때 Git 많이들 사용하시죠?? 처음 접하면 어렵기도하고 방법을 모를 때가 있어요 간단하게 프로젝트를 깃에 올리는 방법을 알아볼게요 깃에 대한 포스팅을 하려고했는데 못하고있다가.. 동아리를 하면서 한번 더 하는김에 정리를 해봤어요 ㅎㅎ . . . 먼저 자신이 깃을 만들고싶은 폴더로 이동할게요! 그 다음 Git에서 자신이 만든 Repository에 들어가서 초록색 버튼을 누르고 https주소를 복사해요 다음으로는 터미널을 켜볼께요 자신이 작업할 폴더의 위치로 경로를 이동해주세요 자신이 작업할 경로의 폴더와 터미널의 경로가 이렇게 떠있겟죠?? 위와 같이 git clone [git repo 주소] 를 입력해주세요 하셨다면 아래와같이 폴더가 Repo이름과 같은 폴더가 하나 생겻죠?? (저는 KimNam..

끄적 끄적/Git 2020.04.18