サンプルコード(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にもアップロードしていますのでご自由にお使いください。