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.
To run the example project, clone the repo, and run build the project, also check out the storyboard to see the custom view build.
- iOS10.0
To install it, add the following line to your Cartfile:
github "Kautenja/UIXibView" "master"
The basic workflow for creating a custom IBDesignable looks like this.
- 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.
- 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
- Set the owner of the nib file to the class you stubbed.
- the view inside the xib should not be subclassed by the custom class
- Set up the view dimensions
- Design your view
- 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!
}
- Use your custom view in another view or storyboard or whatever!
kautenja, [email protected]
UIXibView is available under the MIT license. See the LICENSE file for more info.