• Quick Bits: Delaying Animation Loops Core Animation makes it easy to repeat animations any number of times or for any duration. Sometimes, however, you may want to impose a delay duration after an animation finishes before it repeats. Core Animation doesn’t offer a direct API for such a feature, but it’s actually quite easy to set something like this up. This Quick Bits post will show a simple way to introduce a delay before repeating an animation.

  • Creating a Simple Animatable Sprite Layer Core Animation is not only capable of creating advanced, modern animations, but with a little tweaking, it’s possible to create old-school sprite animations akin to the ones you would see on an NES or SNES game console. This post will explore creating a very simple CALayer subclass that is capable of displaying a sprite animation sequence.

  • Kite Compositor: A Better Way to Animate Recent years have ushered in several new tools for design and animation; tightening the feedback loop between working and visualizing the results is crucial for any type of visual artist. Several months ago, a new macOS app landed called Kite Compositor, and I can confidently say that it has profoundly changed how I design and implement animations on iOS. We’ll take a brief look at what Kite does and why I recommend it without hesitation to anyone serious about animation work on macOS, iOS, and tvOS.

  • CAShapeLayer in Depth, Part II In “CAShapeLayer in Depth, Part I,” we explored the creation and configuration of shape layers, looking at each of their properties in turn. While useful as a static shape drawing tool, CAShapeLayer was built to be a powerful, easy-to-use animation class as well. Now, in Part II of “CAShapeLayer in Depth,” we’ll take a close look at each of CAShapeLayer’s animatable properties.

  • Quick Bits: Simple Text Label Transition UILabel is a fairly robust class for displaying text of any kind. However, it doesn’t offer much in the way of animations and transitions. Changing a label’s text just updates its rendered bitmap immediately, but sometimes, it’s nice to have a simple transition effect between two text values. This Quick Bits post will demonstrate one such technique that I use quite a bit.

  • CAShapeLayer in Depth, Part I After my extensive write up about CATransaction, I received a request to write a similar post about CAShapeLayer. Shape layers are very useful for creating UI elements, and because they are vector-based, they are resolution independent. Not only that, but many shape layer properties are fully animatable, making them perfect for things like icon transitions.

  • Quick Bits: Closure-based CAAnimationDelegate CAAnimation has an informal a formal—as of iOS 10—delegate protocol for informing an object when an animation starts or stops, which is useful in many cases. However, with the advent of blocks and closures, using delegates for this type of thing can be cumbersome, especially if you are managing several animations. UIKit introduced convenient, block-based animation methods, yet Core Animation never did the same. Let’s fix that.

  • CATransaction in Depth CATransaction is a class that is often overlooked by many iOS developers despite offering many useful functions for controlling and responding to animations. The documentation explains things fairly well, but this post’s goal is to explore CATransaction in depth.

  • Finally... I finally got around to setting up a new blog at calayer.com!