             }
 
             if let layoutMarginsView = layoutMarginsView {
-                stackViewConstraints.append(constraint(item: self, attribute: .BottomMargin, toItem: layoutMarginsView))
-                stackViewConstraints.append(constraint(item: self, attribute: .LeftMargin, toItem: layoutMarginsView))
-                stackViewConstraints.append(constraint(item: self, attribute: .RightMargin, toItem: layoutMarginsView))
-                stackViewConstraints.append(constraint(item: self, attribute: .TopMargin, toItem: layoutMarginsView))
+                let bottomConstraint: NSLayoutConstraint
+                let leftConstraint: NSLayoutConstraint
+                let rightConstraint: NSLayoutConstraint
+                let topConstraint: NSLayoutConstraint
+                if #available(iOS 8.0, *) {
+                    bottomConstraint = constraint(item: self, attribute: .BottomMargin, toItem: layoutMarginsView, attribute: .Bottom)
+                    leftConstraint = constraint(item: self, attribute: .LeftMargin, toItem: layoutMarginsView, attribute: .Left)
+                    rightConstraint = constraint(item: self, attribute: .RightMargin, toItem: layoutMarginsView, attribute: .Right)
+                    topConstraint = constraint(item: self, attribute: .TopMargin, toItem: layoutMarginsView, attribute: .Top)
+                } else {
+                    bottomConstraint = constraint(item: self, attribute: .Bottom, toItem: layoutMarginsView, attribute: .Bottom, constant: _layoutMargins.bottom)
+                    leftConstraint = constraint(item: self, attribute: .Left, toItem: layoutMarginsView, attribute: .Left, constant: -_layoutMargins.left)
+                    rightConstraint = constraint(item: self, attribute: .Right, toItem: layoutMarginsView, attribute: .Right, constant: _layoutMargins.right)
+                    topConstraint = constraint(item: self, attribute: .Top, toItem: layoutMarginsView, attribute: .Top, constant: -_layoutMargins.top)
+                }
+            
+                bottomConstraint.identifier = "TZView-bottomMargin-guide-constraint"
+                leftConstraint.identifier = "TZView-leftMargin-guide-constraint"
+                rightConstraint.identifier = "TZView-rightMargin-guide-constraint"
+                topConstraint.identifier = "TZView-topMargin-guide-constraint"
+                stackViewConstraints += [bottomConstraint, leftConstraint, rightConstraint, topConstraint]
             }
             
             addConstraints(stackViewConstraints)

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

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

            case .Trailing, .Bottom:
                constraints += equalAttributes(views: views, attribute: .Bottom)
            case .FirstBaseline:
                if #available(iOS 8.0, *) {
                    constraints += equalAttributes(views: views, attribute: .FirstBaseline)
                }
            }
            
        case .Vertical:
