Skip to content

a UIView subclass for easily building IBDesignable views without boilerplate

License

Notifications You must be signed in to change notification settings

Kautenja/UIXibView

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UIXibView

Icon

swift-badge carthage-badge

This framework aims to simplify the process of building custom IBDesignables by reducing boilerplate and hiding the ugly interface builder details from what should be concise, and reusable subclasses of UIView.

Example

To run the example project, clone the repo, and run build the project, also check out the storyboard to see the custom view build.

Requirements

  • iOS10.0

Installation

Carthage

To install it, add the following line to your Cartfile:

github "Kautenja/UIXibView" "master"

Workflow

The basic workflow for creating a custom IBDesignable looks like this.

  1. start with stubbing your UIView subclass
import UIXibView

@IBDesignable class DummyView: UIXibView {

}

you'll notice that instead of subclassing UIView, we have subclassed XibView instead. What this does is associate this class directly with a xib file of the same name. Don't worry, XibView is a subclass of UIView.

  • dont forget the @IBDesignable flag. without it, the interface builder wont know that this is a view to build.
  1. Create the xib file

Next create the .xib file that you will design your custom view in, it's important that the xib filename match the class that it will be owned by. This is how the XibView machinery automatically finds its xib file based on the subclass name. In our example case the file would be called DummyView.xib

  1. Set the owner of the nib file to the class you stubbed.

File Owner Navigator

File Owner Class

  • the view inside the xib should not be subclassed by the custom class
  1. Set up the view dimensions

Select View

Set Dimensions

  1. Design your view

Design

  1. Hookup IBOutlets, IBActions, write IBInspectables, etc.
import UIXibView

/// an example of the XibView subclassing pattern
@IBDesignable class DummyView: UIXibView {

    /// some segmented control
    @IBOutlet weak var segmentedControl: UISegmentedControl!

    /// some button
    @IBOutlet weak var button: UIButton!

    /// the background color of some button, can be changed
    /// in the interface builder
    @IBInspectable var buttonBackgroundColor: UIColor? {
        get {
            return button.backgroundColor
        }
        set {
            button.backgroundColor = newValue
        }
    }

    /// the top switch
    @IBOutlet weak var switchTop: UISwitch!

    /// the bottom switch
    @IBOutlet weak var switchBottom: UISwitch!

}
  1. Use your custom view in another view or storyboard or whatever!

Using View

Author

kautenja, [email protected]

License

UIXibView is available under the MIT license. See the LICENSE file for more info.