I Am Finley

Development

Mind-Blowing Web Engineering from Flipboard

0 Comments

In order to optimize scrolling performance, we knew that we needed to keep paint times below 16ms and limit reflows and repaints. This is especially important during animations. To avoid painting during animations there are two properties you can safely animate: CSS transform and opacity. But that really limits your options.

60 fps on the mobile web

As an iOS developer and a web developer, the biggest difference I’ve seen is in the handling of performance. The average web developer doesn’t think for a second about optimizing rendering for mobile, preventing reflows and repaints, and far less garbage collection. If an iOS developer acted the same, their app would never run.

The engineering that went into producing Flipboard for the mobile web is absolutely stunning. The easy route would have been to make it with HTML and CSS, but the performance would have been very poor. To make it with Canvas required a lot more thought, but produced something magical.

Permalink

IBInspectable / IBDesignable

0 Comments

Marked with @IBInspectable (or IBInspectable in Objective-C), they are easily editable in Interface Builder's inspector panel. Note that Xcode goes the extra mile here—property names are converted from camel- to title-case and related names are grouped together.

[...]

As if that weren't enough, IBDesignable custom views also debut in Xcode 6. When applied to a UIView or NSView subclass, the @IBDesignable designation lets Interface Builder know that it should render the view directly in the canvas. This allows seeing how your custom views will appear without building and running your app after each change.

IBInspectable / IBDesignable

These new methods are downright game changing, in my opinion, for Interface Builder. I have, like many developers, had a hot/cold relationship with Interface Builder. One of my biggest grumbles is custom views. Some projects don’t have a lot of custom views, so I’m down with IB. Others have a ton, so I’m not. Now with a limited amount of work, I can make my custom view configurable in Interface Builder. Might have to give this a try in my next app.

Permalink