     }
     
     public var alignment: TZStackViewAlignment = .Fill
-
-    public var spacing: CGFloat = 0
-    
-    public var layoutMarginsRelativeArrangement = false
+    
+    @objc @IBInspectable private var axisValue: Int {
+        get {
+            return axis.rawValue
+        }
+        set {
+            axis = UILayoutConstraintAxis(rawValue: newValue) ?? .Horizontal
+        }
+    }
+    
+    @objc @IBInspectable private var alignmentValue: Int {
+        get {
+            return alignment.rawValue
+        }
+        set {
+            alignment = TZStackViewAlignment(rawValue: newValue) ?? .Fill
+        }
+    }
+    
+    @objc @IBInspectable private var distributionValue: Int {
+        get {
+            return distribution.rawValue
+        }
+        set {
+            distribution = TZStackViewDistribution(rawValue: newValue) ?? .Fill
+        }
+    }
+
+    @objc @IBInspectable public var spacing: CGFloat = 0
+    
+    @objc @IBInspectable public var layoutMarginsRelativeArrangement: Bool = false
 
     public private(set) var arrangedSubviews: [UIView] = [] {
         didSet {

        super.updateConstraints()
    }

    required public init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)!
    }
    
    private func addSpacerView() -> TZSpacerView {
        let spacerView = TZSpacerView()
        spacerView.translatesAutoresizingMaskIntoConstraints = false

        // This removes `hidden` value KVO observers using didSet()
        { self.arrangedSubviews = [] }()
    }

    override public func awakeFromNib() {
        super.awakeFromNib()
        
        // a hack, remove Interface Builder generated constraints that are not created by you
        for aConstraint in constraints where NSStringFromClass(aConstraint.dynamicType) == "NSIBPrototypingLayoutConstraint" {
            removeConstraint(aConstraint)
        }
        
        for aView in subviews {
            addArrangedSubview(aView)
        }
    }
    
    override public func prepareForInterfaceBuilder() {
        if #available(iOS 8.0, *) {
            super.prepareForInterfaceBuilder()
                        
            for aView in subviews {
                addArrangedSubview(aView)
            }
        }
    }

    private func registerHiddenListeners(previousArrangedSubviews: [UIView]) {
        for subview in previousArrangedSubviews {
            self.removeHiddenListener(subview)
