Ray Wenderlich
-
[CoreAnimation] Ch11. Layer Springs (레이어단의 스프링 애니메이션) + (CASpringAnimation)Ray Wenderlich/Core Animation 2018. 8. 9. 20:14
IntroLayer에 스프링을 적용하는 건 UIView에서 적용하던 것과 조금 다르다. UIView에서 사용했던건 간략화된 유사-스프링 애니메이션이라고 볼 수 있다. 하지만 Layer에서 사용하는 스프링은 물리적인 접근을 통해 좀 더 실제 스프링효과를 보여준다. Damped harmonic oscillators(시간이 지남에 따라 진폭이 감소하는 진동을 말함) 실에 매달린 추를 swing시킨다고 생각해보자(물리시간에 진자운동이라고 배웠던 기억이..)마찰이 없다면, 무한히 추가 왔다갔다 할 것이다. (Harmonic oscillator) 하지만 실제로는 마찰이 있져?? 이때는 추가 왔다 갔다 하면서 멈추게 된다. 왔다 갔다 하는 거리도 시간이 지남에 따라 줄어들게 된다. (Damped harmonic os..
-
[CoreAnimation] Ch10. Groups and Advanced Timing (애니메이션 그룹과 커스텀 타이밍)Ray Wenderlich/Core Animation 2018. 8. 8. 00:16
Intro지금까지 layer animation을 전부 independent하게 추가하였다.하지만 여러 애니메이션을 syncronous하게 할 수 있다. 이게 바로 animation groups이다. CAAnimationGroupCAAnimationGroup는 CAAnimation을 상속받는다. 즉, 우리가 지금까지 사용했던 CABasicAnimation의 모든 프로퍼티가 사용가능하다. beginTime, duration, fillMode 등 AnimationGroup에서 설정한 beginTime, duraiton, fillMode등은 그룹에 속한 애니메이션 객체에 적용된다. 따라서, 그룹에 추가할 애니메이션을 설정할 때, 굳이 위 값들을 설정해주지 않아도 알아서 적용된다.Animation easingUI..
-
[CoreAnimation] Ch7. Animating Constraints - (오토레이아웃으로 애니메이션하기)Ray Wenderlich/Core Animation 2018. 7. 31. 22:12
7장 Animating ConstraintsIntro이전에는 alpha, frame등의 변경으로 애니메이션을 구현했지만, AutoLayout은 좀 다르다.Constraint의 변경을 한 뒤, AutoLayout의 State변경을 통해 애니메이션을 구현한다. Making the menu expandNSLayoutConstraint도 UIView처럼 @IBOutlet으로 연결가능하다.연결한 Constraint의 constant를 변경해보자.뷰의 크기와 위치가 변하는걸 확인한다. 이제 애니메이션을 해보자. Animating layout changesConstraint의 constant를 변경하고 끝내면 애니메이션 없이 뷰가 변한다.하지만 여기에 UIView.animate(.... view.layoutIfNee..
-
RxSwift - combineLatest(), zip() 에 대해서 알아보자.Ray Wenderlich/RxSwift 2018. 7. 13. 02:41
Ch9. Combining operators p.186 - p.190 combineLatest그림을 보고 combineLatest가 어떤 기능을 할 지, 먼저 추측해보자.셜록급의 추리가 아니더라도, 어느정도 끄덕하게 될 만큼 직관적이다.두 개의 시퀀스가 combineLatest를 만나 하나의 시퀀스가 되었다.이 합쳐진 시퀀스는 서브 시퀀스(즉, left와 right)에서 이벤트가 발생할 때마다, 이벤트를 발생시킨다.합쳐진 시퀀스는 두 서브 시퀀스의 Element를 조합하여 새로운 Element를 전달한다. 첫 번째 예제우선 두 개의 시퀀스를 준비해보자.let left = PublishSubject() let right = PublishSubject() combineLatest를 사용하여 하나로 합쳐진 시..
-
RxSwift - merge()에 대해서 알아보자.Ray Wenderlich/RxSwift 2018. 7. 6. 02:23
Ch9. Combining Operators p.184 - p.186 merge()RxSwift에서 시퀀스를 합쳐주는 operator는 다양하다. 그 중, merge를 이용해 쉽게 접근해보자. 아래 그림을 보고, merge가 어떤 역할을 하는지 한번 짐작해보자. 어떤 역할을 하는지, 코드를 통해서 알아보자. (아래는 이미지입니다. 텍스트로 작성한 코드는 본문 최하단에 첨부)1. PublishSubject를 두 개 만들었다.2. Observable의 Observable을 만든다. source의 타입은 Observsble이다.3. merge()를 사용했다. merge()의 리턴 값을 subscribe하고 있다.4. leftValues에는 독일의 도시가, rightValues에는 스페인의 도시가 들어있다. l..
-
RxSwift - materialize, dematerialize에 대해서 알아보자.Ray Wenderlich/RxSwift 2018. 6. 13. 23:45
Observing events p.151 - p155 flatMap(링크), flatMapLatest(링크)에서 이어지는 포스트입니다. 도입부 해석을 잘 못하겠음.. 원문 첨부하고 코드로 이해하기. There may be times when you want to convert an observable into an observable of its events. One typical scenario where this is useful is when you do not have control over an observable that has observable properties, and you want to handle error events to avoid terminating outer sequenc..
-
RxSwift - flatMap에 대해서 알아보자.Ray Wenderlich/RxSwift 2018. 6. 2. 22:54
Ch7. Transforming Operators p.146 - p.151 Transforming inner observablesinner observable이라 함은 Observable안에 있는 Observable을 말한다.inner Observable을 다루기 위해 필요한 flatMap에 대해서 알아보도록 하자. 문서에서는 flatMap을 이렇게 설명하고 있다.Observable시퀀스의 element당 한 개의 새로운 Observable 시퀀스를 생성한다. 이렇게 생성된 여러개의 새로운 시퀀스를 하나의 시퀀스로 합쳐준다.(원문: Projects each element of an observable sequence to an observable sequence and merges the resultin..