         return viewConstraints
     }
 
-    func pinEdge(edge: EdgeAnchor, toEdge: EdgeAnchor, ofView: UIView, constant: CGFloat = 0.0, priority: UILayoutPriority = UILayoutPriorityRequired, activate: Bool = true) -> NSLayoutConstraint {
-        self.translatesAutoresizingMaskIntoConstraints = false
-    
+    func pinEdge(edge: EdgeAnchor, toEdge: EdgeAnchor, ofView: UIView, relation: NSLayoutRelation = .Equal, constant: CGFloat = 0.0, priority: UILayoutPriority = UILayoutPriorityRequired, activate: Bool = true) -> NSLayoutConstraint {
         let fromAnchor = self.anchorForEdge(edge)
         let toAnchor = ofView.anchorForEdge(toEdge)
 
-        let constraint = fromAnchor.constraintEqualToAnchor(toAnchor, constant: constant)
+        let constraint: NSLayoutConstraint
+        if relation == .GreaterThanOrEqual {
+            constraint = fromAnchor.constraintGreaterThanOrEqualToAnchor(toAnchor, constant: constant)
+        } else if relation == .LessThanOrEqual {
+            constraint = fromAnchor.constraintLessThanOrEqualToAnchor(toAnchor, constant: constant)
+        } else {
+            constraint = fromAnchor.constraintEqualToAnchor(toAnchor, constant: constant)
+        }
+
         constraint.priority = priority
         constraint.active = activate
 

private extension UIView {

    func anchorForEdge(edge: EdgeAnchor) -> NSLayoutAnchor {
        switch edge {

        case EdgeAnchor.leading:
            return self.leadingAnchor

        case EdgeAnchor.trailing:
            return self.trailingAnchor

        case EdgeAnchor.top:
            return self.topAnchor

        case EdgeAnchor.bottom:
            return self.bottomAnchor

        case EdgeAnchor.centerX:
            return self.centerXAnchor

        case EdgeAnchor.centerY:
            return self.centerYAnchor

        case EdgeAnchor.width:
            return self.widthAnchor

        case EdgeAnchor.height:
            return self.heightAnchor

        default:
            fatalError("There is an unhandled edge case with edges. Get it? Edge case… 😂")
        }
    }


                let currentAnchor = self.anchorForEdge(edge)
                let viewAnchor = view.anchorForEdge(edge)
                let constraint: NSLayoutConstraint
                if relation == .GreaterThanOrEqual {
                    constraint = currentAnchor.constraintGreaterThanOrEqualToAnchor(viewAnchor, constant: constant)
                } else if relation == .LessThanOrEqual {
                    constraint = currentAnchor.constraintLessThanOrEqualToAnchor(viewAnchor, constant: constant)
                } else {
                    constraint = currentAnchor.constraintEqualToAnchor(viewAnchor, constant: constant)
                }

                constraint.priority = priority
                return constraint
            }
