Skip to content

Instantly share code, notes, and snippets.

@wanewang
Forked from bwhiteley/gist:049e4bede49e71a6d2e2
Last active January 4, 2016 16:50
Show Gist options
  • Save wanewang/c830c09af7d8eba6d1df to your computer and use it in GitHub Desktop.
Save wanewang/c830c09af7d8eba6d1df to your computer and use it in GitHub Desktop.
Initialize Swift subclass of UIView, designed in .xib
// Create CustomView.xib, set File's Owner to CustomView.
class CustomView : UIView {
// other outlets
override init(frame: CGRect) { // for using CustomView in code
super.init(frame: frame)
self.commonInit()
}
required init?(coder aDecoder: NSCoder) { // for using CustomView in IB
super.init(coder: aDecoder)
self.commonInit()
}
private func commonInit() {
// for IBDesingable usage
#if !TARGET_INTERFACE_BUILDER
let bundle = NSBundle.mainBundle()
#else
let bundle = NSBundle.init(forClass: self.dynamicType)
#endif
// parsing xib name from class
let className = NSStringFromClass(self.dynamicType)
let names = className.componentsSeparatedByString(".")
if let viewString = names.last,
let view = bundle.loadNibNamed(viewString, owner: self, options: nil).first as? UIView
where names.count == 2 {
view.frame = self.layer.bounds;
view.autoresizingMask = [.FlexibleWidth, .FlexibleHeight]
self.addSubview(view)
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment