 
     public init(arrangedSubviews: [UIView] = []) {
         super.init(frame: CGRectZero)
+        commonInit(arrangedSubviews)
+    }
+    
+    override public init(frame: CGRect) {
+        super.init(frame: frame)
+        commonInit([])
+    }
+
+    required public init(coder aDecoder: NSCoder) {
+        super.init(coder: aDecoder)!
+        commonInit([])
+    }
+    
+    private func commonInit(arrangedSubviews: [UIView]) {
         for arrangedSubview in arrangedSubviews {
             arrangedSubview.translatesAutoresizingMaskIntoConstraints = false
             addSubview(arrangedSubview)

    }
    
    public var alignment: TZStackViewAlignment = .Fill

    public var spacing: CGFloat = 0
    
    public var layoutMarginsRelativeArrangement = false

    public private(set) var arrangedSubviews: [UIView] = [] {
        didSet {

        super.updateConstraints()
    }

    private func addSpacerView() -> TZSpacerView {
        let spacerView = TZSpacerView()
        spacerView.translatesAutoresizingMaskIntoConstraints = false
