BUNDLE: Jumpstart your iOS development with the Swift Power Pack – now available! >>

How to use IBInspectable to adjust values in Interface Builder

Available from iOS 8.0

The @IBInspectable keyword lets you specify that some parts of a custom UIView subclass should be configurable inside Interface Builder. Only some kinds of values are supported (booleans, numbers, strings, points, rects, colors and images) but that ought to be enough for most purposes.

When your app is run, the values that were set in Interface Builder are automatically set, just like any other IB value. Neat, huh?

Here's an example that creates a GradientView class. This wraps the CAGradientLayer class up in a UIView that you can place anywhere in your app. Even better, thanks to @IBInspectable you can customize the colors in your gradient right inside IB. Add this class to your project now:

@IBDesignable class GradientView: UIView {
    @IBInspectable var startColor: UIColor = UIColor.white
    @IBInspectable var endColor: UIColor = UIColor.white

    override class var layerClass: AnyClass {
        return CAGradientLayer.self
    }

    override func layoutSubviews() {
        (layer as! CAGradientLayer).colors = [startColor.cgColor, endColor.cgColor]
    }
}

Now go to IB, drop a UIView on to your storyboard, then change its class to be GradientView. Once that's done, Xcode will compile your project automatically, and then inside the attributes inspector you'll see two color selectors for the start and end color.

Note: @IBInspectable frequently does not play nicely with type inference, which is why I've explicitly declared both the type (UIColor) and default value (UIColor.white).

Did this solution work for you? Please pass it on!

Other people are reading…

About the Swift Knowledge Base

This is part of the Swift Knowledge Base, a free, searchable collection of solutions for common iOS questions.

Go from iOS to macOS the easy way!

If you like Hacking with Swift, you'll love Hacking with macOS – learn to build macOS apps today, using 18 real-world projects!

Click here to visit the Hacking with Swift store >>