iyOmSd 179

[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

[Swift] - Apple Login (2/2)

이전 글에서는 로그인 버튼을 단순하게 구현하는것만 해봤구요 이제는 데이터를 만져볼게요 // 로그인 성공시 func authorizationController(controller: ASAuthorizationController, didCompleteWithAuthorization authorization: ASAuthorization) { switch authorization.credential { case let appleIDCredential as ASAuthorizationAppleIDCredential: // Create an account in your system. let userIdentifier = appleIDCredential.user let fullName = appleIDCredent..

iyOmSd/Title: Swift 2020.04.14

[Swift] - Apple Login (1/2)

안녕하세요 😁😁 오늘은 애플로그인을 구현해 볼거에요 SNS로그인을 구현해야한다면 꼭 같이 구현해줘야 하는 필수 로그인이죠 다른 SNS로그인과 달리 애플로그인은 보안적으로 좋다고 소개 하더라구요 프로젝트 생성을 먼저해보겠습니다 Signing & Capabilities에서 Sign In with Apple을 추가해주세요!! 하고나면 빨간 메시지가 보일거에요 왜냐하면 인증서에 추가를 해줘야 하기때문이에요!! 그럼 등록하러 가볼께요 https://developer.apple.com 에서 Account메뉴로 가서 로 들어가봅니다~~ Identifiers추가를 해볼게요 많은 목록중에서 Sign In with Apple 보이죠?? 저거를 체크! Bundle Id도 써주고 나면 준비는 끝났습니다. 프로젝트로 다시 돌아..

iyOmSd/Title: Swift 2020.04.14

[Swift] - MultiPart통신 (멀티파트 이미지업로드)

안녕하세요😁😁 body와 이미지를 같이통신을 하는 예제가 많이 없어서 정리해봤어요 이번 게시물은 통신을 하는데 이미지를 올릴 때... 어떻게 올리지?? 해본적이 있을거에요 그 방법에 대해서 알아볼거에요 이미지를 서버로 전송하는 방법에는 여러 방법이 있을거에요 제가아는 방법에는 1. 이미지를 baseString형으로 전환해서 String으로 전송하는 방법 (로그 찍어보시면... 엄청..길어요..) 이 방식을 사용한다면 문자열이 엄청 길어서 데이터가 크기때문에 좋지 않은것 같아요 2. 이미지를 Data로 전환해서 멀티파트로 전송하는 방법 저는 이 방법을 이제부터 설명할거에요!! 정의를 보면 multipart/form-data는 파일 업로드가 있는 양식요소에 사용되는 enctype 속성의 값중 하나이고, mu..

iyOmSd/Title: Swift 2020.04.11

[Swift] XML 파싱

XML이란..? Extensible Markup Language의 종류중 대표적인 언어에요 Markup Language 란? 태그, 등을 이용하여 문서나 데이터의 구조를 명기하는 언어의 한 가지라고 사전에 나오네요 , , 이런 태그들 본적 있으시죠?? 그런 태그를 사용한 거에요 대표적으로 HTML, XML언어가 있죠 HTML 문자열로 응답을 받을 때 파싱받아서 앱에 적용 하고 싶은경우가 생길 수 있어요 RSS(Rich Site Summary)가 대표적인 예로 있겠네요! RSS는 뉴스나 블로그 사이트에서 주로 사용하는 콘텐츠 표현 방식 이라고해요 아무튼!! 이러한 XML로 이루어진 응답을 파싱해보는 방법에 대해서 알아보려고 해요 예시로 구글뉴스의 RSS주소를 가져왔어요 아래의 주소를 치면 사진과같이 응답이..

iyOmSd/Title: Swift 2020.04.03