NEW! Master Swift design patterns with my latest book! >>

How to use IBInspectable to adjust values in Interface Builder

Paul Hudson       @twostraws

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).

Available from iOS 8.0

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.

Love Hacking with Swift?

Get all 40 projects in PDF and HTML: buy the Hacking with Swift book! It contains over 1300 pages of hands-on Swift coding, and will really help boost your iOS career

MASTER SWIFT NOW
Buy Practical iOS 12 Buy Pro Swift Buy Swift Design Patterns Buy Practical iOS 11 Buy Swift Coding Challenges Buy Server-Side Swift (Vapor Edition) Buy Server-Side Swift (Kitura Edition) Buy Hacking with macOS Buy Advanced iOS Volume One Buy Hacking with watchOS Buy Hacking with tvOS Buy Hacking with Swift Buy Dive Into SpriteKit Buy Swift in Sixty Seconds Buy Objective-C for Swift Developers Buy Beyond Code

Was this page useful? Let me know!

Click here to visit the Hacking with Swift store >>