Swift
-
[CoreAnimation] Ch9. Animation Keys and Delegates (레이어 애니메이션 Delegate, Key를 사용하기)Ray Wenderlich/Core Animation 2018. 8. 1. 20:58
9장 Animation Keys and Delegates Intro UIView animation을 사용할 때, 애니메이션을 중지할 수 없었다. 하지만 Core Animation에선 모든게 가능!layer의 애니메이션은 멈출 수 있다. 더불어 delegate를 설정하여 애니메이션의 시작과 끝(or interrupted)에 대한 핸들링도 가능하다. Introducing animation delegates CAAnimationDelegate에는 두 메소드가 있다. func animationDidStart(_ anim: CAAnimation)func animationDidStop(_ anim: CAAnimation, finished flag: Bool) Key-value coding compliance CAA..
-
CALayer의 position과 anchorPoint의 관계앱등이에게 살충제를 뿌린다./iOS 2018. 8. 1. 19:19
CALayer의 position, anchorPoint UIView의 layer프로퍼티. CALayer타입이고 position을 갖고 있습니다. 파란뷰위에 노란뷰를 올렸습니다.이 때, 디폴트로 노란뷰.frame은 (0, 0, 100, 100)을 갖습니다. 그리고 노란뷰.layer.position의 값은 (50, 50)입니다. 노란뷰.center와 같은 값이죠. 그렇다면 이렇게 생각할 수 있습니다. 아~ UIView.layer.position은 UIView.center를 의미하는 거구나. 결론은 아닙니다. 그렇다면 center라고 네이밍하지, position이라고 하진 않았겠죠? CALayer에는 anchorPoint라는게 있습니다. 타입은 CGPoint고 디폴트는 (0.5, 0.5)입니다. x와 y의 값..
-
RxSwift - skip, skipWhile, skipUntil에 대해서 알아보자.Ray Wenderlich/RxSwift 2018. 4. 4. 01:51
Ch5. Filtering Operators (2) p.108 - p.111Filtering Operator(1)은 여기를 클릭 지난 포스트에서 ignore, elementAt, filter Operator에 대해서 알아보았다.이 포스트에서는 skip, skipWhile, skipUntil Operator에 대해서 알아보겠다. Skipping operatorsskip(_:)시퀀스에서 발생하는 이벤트 중 초반 몇개는 받고 싶지 않을수가 있다. 예를 들어, 일기예보를 받아보는 경우를 생각해보자. 일기예보를 받고 싶지만 난 오전 날씨가 궁금하지가 않다.근데 일기예보는 오전날씨부터 주구장창 알려줄거란 말이죠?? 이런 경우에, skip을 사용해서 오전날씨는 패스할 수 있겠네요. 시퀀스에 skip Operator가..
-
RxSwift - Subject란? (PublishSubject, Behavior Subject, Replay Subject, Variable)Ray Wenderlich/RxSwift 2018. 2. 14. 14:06
이번 포스트는 코드로 시작해보자 (바로 이해할 필요는 없음)PublishSubject는 데이터를 전달받아 subscriber들에게 뿌려주는 역할을 한다. 마치 신문사(newspaper publisher)에서 하는 Publish같은 느낌임이 코드는 수행해도 print는 되지 않는다. 이유는 subscriber가 없기 때문에! 그럼 subject를 subscribe하는 코드를 코드를 넣어보자.subject에서 next이벤트가 발생하면 string을 출력해주고 있다.이 코드를 넣어도 마찬가지로 print문은 수행되지 않는다.왜냐하면 PublishSubject는 현재 나를 subscribe하는 subscriber들에게만 이벤트를 emit하기 때문이다.즉, next이벤트가 발생한 뒤에 subscribe한 subs..
-
RxSwift - Observable이란?Ray Wenderlich/RxSwift 2018. 1. 30. 15:25
Observables ~ p.54 What is an observable?Rx에는 “observable”, “observable sequence”, “sequence” 이런 단어들이 많이 나온다. 다 같은 의미다.가끔 “stream”이란 단어도 나오는데, 우리는 “stream“이란 단어를 사용하도록 하자. Observable은 하나의 sequence이고, 여러가지 강점을 갖고 있다.그 중 하나가 다들 알겠지만, async하다는 것! 그리고, Observable이 이벤트를 발생시키는것을 emit한다고 표현한다.발생하는 이벤트들은 숫자, 커스텀 인스턴스, 제스쳐(ex. tap) 와 같은 값을 포함할 수 있다. 그림으로 이해해보자. 이 그림은 하나의 sequence를 의미한다.가로로 긴 화살표는 시간의 흐름을..
-
[iOS] Alamofire의 고급 사용법!! SessionManager, SessionDelegate, RequestAdapter, RequestRetrier앱등이에게 살충제를 뿌린다./iOS 2018. 1. 16. 21:21
Alamofire - AdvancedUsage제가 개발중인 프로젝트에서는 중요하다고 판단되는 API의 경우, API가 실패하면 3회 재시도하는 로직이 있습니다.이러한 로직을 공통으로 처리하고자 하는 도중, Alamofire에서 제공하는 Retrier는 뭐지?라는 의문을 시작으로 이 문서를 작성한다.(Alamofire - Advanced Usage를 기반으로 작성하였음) Session ManagerRetrier를 알아보기 전에 SessionManager라는 클래스를 짚고 넘어갈 필요가 있다. 우리는 보통 Alamofire의 request를 생성할 때, 아래와 같은 코드를 작성한다.Alamofire.request("http://www.naver.com") 사실 Alamofire.request()는 Alamo..
-
[Functional Programming in Swift] Functor 이자 Monad 이다.는 무슨의미일까?앱등이에게 살충제를 뿌린다./Swift 2017. 12. 6. 17:19
어떤 Context가 Functor이자 Monad이다. 라는 말은 무슨뜻일까? Context의 Value를 map으로 transform하는 경우 Functor라고 할 수 있다.Context의 Value를 flatMap으로 transform하는 경우 Monad라고 할 수 있다. 따라서 어떤 Context가 Functor이자 Monad인 경우는 Value의 transform을 할 때, map, flatMap 둘 모두를 사용 가능할 때 쓰는말이다.Ex) Optional은 Functor이자 Monad인 Context이다. [까먹을까봐 메모 겸 작성]