분류 전체보기
-
[GCD] DispatchQueue.. main큐와 gloabal큐? sync와 asnyc? 궁금증 해결해보자.앱등이에게 살충제를 뿌린다./Swift 2018. 9. 4. 16:22
많은 언어에서 제공하는 비동기 처리 방식.Swift(또는 objc)에는 GCD가 있다. iOS개발을 하다보면, 아래 코드를 많이 보고, 또 사용할 수 밖에 없다.DispatchQueue.main.async {//...} 구글에 GCD를 쳐보면 무수히 많은 정리문서가 존재한다. (심지어 한글로 포스팅한 글도 엄청 많음)그래서 난 나만의 정리를..위해서 포스트를 작성한다. 아래 코드의 결과를 정확히 예측할 수 있다면, 학습이 되었다고 판단하겠다. UIViewController의 viewDidLoad()에서 작성한 코드니까, 아래 코드는 메인스레드에서 작동한다는 전제가 있다. override func viewDidLoad() { super.viewDidLoad() DispatchQueue.global().sy..
-
[CoreAnimation] Ch14. Gradient Animation (그라데이션 애니메이션)Ray Wenderlich/Core Animation 2018. 9. 1. 18:16
Intro 예전 iOS의 락스크린에 있는 밀어서 잠금해제를 떠올려보자. 텍스트 위로 그라데이션 컬러가 애니메이션 된다. Drawing your first gradient CAGradientLayer를 사용 startPoint, endPoint: 그라데이션의 방향을 지정한다. colors: 그라데이션에 필요한 색상. 여러 색을 지정할 수 있다. locations: 그라데이션이 될 위치를 지정함 Animating gradients CAGradientLayer는 CALayer의 서브클래스. 애니메이션 가능한 프로퍼티는 아래와 같다. - colors - locations - startPoint, endPoint let gradientAnimation = CABasicAnimation(keyPath: "locat..
-
[CoreAnimation] Ch13. Shaped and MasksRay Wenderlich/Core Animation 2018. 9. 1. 18:10
13장 Shaped and Masks Intro CAShapeLayer - 다양한 곡선(CGPath)을 그릴 수 있다. 베지어 곡선(UIBezierPath)을 이용하여 cgPath프로퍼티에 넣어주면 곡선을 그릴 수 있다. 그릴 곡선을 정했다면 아래 프로퍼티를 수정하여 데코를 할 수 있음 - path - fillColor - lineDashPhase - lineWidth Finishing up the avatar view Creating the bounce-off animation 두 아바타뷰가 만났다 멀어졌다 하는 애니메이션 구현 (특별할 것 없음) Morphing shapes 두 아바타뷰가 만났을 때 찌그러지는 효과를 내서 더 생동감있게 표현 cgPath를 구하기 위해 UIBezierPath를 사용하면..
-
[CoreAnimation] Ch12. Layer Keyframe Animations and Struct Properties (레이어의 키프레임 애니메이션을 알아보자.)Ray Wenderlich/Core Animation 2018. 8. 27. 13:42
12장 Layer Keyframe Animations and Struct Properties IntroUIView의 키프레임 애니메이션에서는 여러 뷰의 여러 프로퍼티를 동시에 애니메이션 처리할 수 있었다. 하지만 Layer에서는 하나의 레이어, 하나의 프로퍼티에 대해서만 키프레임 애니메이션이 가능하다. Introducing keyframe animations CAKeyframeAnimation에서는 fromValue와 toValue를 사용하지 않는다. 대신, values라는 value의 리스트를 사용한다. 그리고 values의 시간에 관한 프로퍼티도 필요하다. (0과 1사이의 상대시간값) Creating a layer keyframe animation CAKeyframeAnimation또한 CAAnima..
-
[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] 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의 값..