サンプルコード(Xcode8、Swift3.0)

CustomView.xib

サンプルという事でものすごくシンプルなカスタムビューにしました。(シンプルすぎてすみません。)

Files OwnerCustomViewにしてください。

CustomView.swift

import UIKit
@IBDesignable
class CustomView: UIView {
@IBOutlet weak var aView: UIView!
override init(frame: CGRect) {
super.init(frame: frame)
loadXib()
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
loadXib()
}
// 初期化
fileprivate func loadXib() {
let bundle = Bundle(for: type(of: self))
let nib = UINib(nibName: "CustomView", bundle: bundle)
let view = nib.instantiate(withOwner: self, options: nil).first as! UIView
addSubview(view)
view.translatesAutoresizingMaskIntoConstraints = false
let bindings = ["view": view]
addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|[view]|", options:NSLayoutFormatOptions(rawValue: 0), metrics:nil, views: bindings))
addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[view]|", options:NSLayoutFormatOptions(rawValue: 0), metrics:nil, views: bindings))
}
// Xib読み込み時に呼ばれる(ViewControllerのviewDidLoad的なもの)
override func awakeFromNib() {
print("awakeFromNib")
}
// AutoLayoutなどサブビューのレイアウト適用後に呼ばれる
override func layoutSubviews() {
print("layoutSubviews")
}
}

StoryBoardを開いてViewControllerにUIViewを配置して、そのCustom Classを作成したカスタムビューのクラス名を指定するだけです。
classの上の箇所に@IBDesignableを入れることによって、StoryBoardなどでこのカスタムビューを配置した場合には見た目が反映されます。

あとは通常のButtonやLabelのように使えばいいだけです。

Github URL

サンプルコードをGithubにもアップロードしていますのでご自由にお使いください。