Practicing latency hiding techniques might be useful here. Try grabbing a first generation iPhone and scroll really fast in Safari, for example — you’ll see a checker grid underneath the actual content. iOS interaction emphasizes movement and fluidity over visual clarity or pixel perfectness; while it is actually acceptable to drop granularity it is usually frowned upon to drop frames. Our Choice (the famous Al Gore book on iOS by Push Pop Press) does the same thing. iBooks does the same thing (PDF only; its ePUB part just chokes). Even GoodReader does the same thing.<p>Several general strategies off the back of my hand: a) precompute images in the background, store and decode the important bits on the fly; b) use proxy images unless the card is visible; c) a combination of both. Sounds like a fun problem (for solving it the first time).<p>On layout — Autolayout is slow, period. On a collection view with square cells of identical sizes, autolayout takes over five seconds to make up its mind. (This is from a random iPhone 4S.) If your design is not super flexible, it might make sense to set up a few styles up front and reuse them again and again. Even drawing unstyled text into framebuffers is heavy if you do it often on dynamically generated content. (For example, 72 small labels for a scrolling date picker chokes at <30FPS.) Sometimes it’s better to design the issue away. Even a well-written piece of software may look awkward and work clumsily when it resizes during rotation while a square thing will generally work. The last ditch is to crossfade, but I digress.<p>The last thing I think is very relevant: layout taking a long time is actually also not a big deal if you only do the initial layout for two or three views you end up reusing. Small, frequent memory allocation (and drawing) during human interaction kills the joy. Hopefully, if you’re using an UIPageViewController, you’re also reusing the view controllers and its views.<p>Side note: I have not seen a great way to cancel work halfway done or is no longer necessary on iOS at the library / framework level. NSOperation has cancellation support which is basically twiddling glorified (hopefully) thread-safe boolean flags that get checked periodically. Sometimes people decide to throw the results away in the completion handler.