Ios

11 Nov 2013

Custom View Controller Transitions in Landscape

iOS 7’s custom transitions are great — until you rotate the device. A breakdown of the landscape bugs, the hacky workarounds that don’t quite hold up, and why we went back to view controller containment.

13 Sep 2013

Compares

Announcing Compares, our side-by-side photo sharing app. Built from scratch with a custom backend, onion-skinning camera, and a social layer for sharing before-and-after shots.

12 Sep 2013

How To Support Old iOS SDK’s in Xcode 5

Xcode 5 dropped the iOS 6 SDK, but you can just copy it back in. Here’s where the SDKs live and how to grab them if you already nuked your old Xcode.

2 Jul 2013

SMSquashView

Bringing cartoon-style squash and stretch to iOS views, automatically. The layer tracks its own velocity and distorts along the direction of travel — no configuration needed, volume stays constant.

4 Mar 2013

Spatter and Spark

Shipping a kids’ storybook app with rich animation and a custom framework under the hood. Built on top of our Goodnight Safari codebase, with artist-driven XML animation specs and a parent-facing progress dashboard.

30 Jan 2013

SMPageControl, Meet UIAccessibility

Adding VoiceOver support to our UIPageControl replacement — and naming pages too. With per-page names and full accessibility parity, SMPageControl finally earns its 1.0 and lands on CocoaPods.

5 Nov 2012

Mistakes Were Made: Audio and ARC

ARC silently kills your AVAudioPlayer mid-playback. Here’s why and how to fix it. Spoiler: make it an ivar, and maybe file a radar while you’re at it.

15 Oct 2012

SMPageControl: UIPageControl’s Fancy One-Upping Cousin

A drop-in UIPageControl replacement with custom dots, images, and per-page indicators. Swap class names, tweak diameters and margins, or go full Dribbble with per-page custom indicator images.

27 Aug 2012

Premature Completion: An Embarrassing Problem

Core Animation runs your completion block early if it doesn’t find any animations. Rude. Includes a sample project to poke at the behavior yourself and avoid hours of confused debugging.

16 Mar 2012

SMShadowedLayer

A CALayer subclass that fakes realistic lighting and shadows during Core Animation. Uses Lambert illumination math and a custom animatable property to keep shading correct mid-transform, specular highlights included.

9 Jan 2012

Sim Deploy

A drag-and-drop tool for getting simulator builds to non-developers. It even supports a custom URL scheme so distributing a new build is as simple as sending someone a link.

12 Dec 2011

Cancel dispatch_after

A simple wrapper to cancel delayed blocks, because GCD won’t let you. Includes the open-source code on GitHub and a look under the hood at the block-juggling trick that makes it work.

5 Oct 2011

Mistakes Were Made: Integral Bounds

Non-integral CALayer bounds don’t just look blurry — they actually chop off pixels. A forensic look at CATextLayer backing stores, with screenshots and sample code to prove it.

21 Sep 2011

All in the Timing: Keeping Track of Time Passed on iOS

Why your freemium game’s clock is so easy to cheat, and what you can (maybe) do about it. A deep dive into absolute vs. relative time on iOS, and a hybrid server-based approach to keep cheaters honest.