 
     func setSize(sizeAnchors: [SizeAnchor] = [ SizeAnchor.width, SizeAnchor.height ], relation: NSLayoutRelation = .Equal, activate: Bool = true) -> [NSLayoutConstraint] {
         return sizeAnchors.map { return self.setSize($0, relation: relation, activate: activate) }
+    }
+
+    func setRelativeSize(sizeAnchor: SizeAnchor, toSizeAnchor: SizeAnchor, ofView: UIView, multiplier: CGFloat, constant: CGFloat, relation: NSLayoutRelation = .Equal, activate: Bool = true) -> NSLayoutConstraint {
+        self.translatesAutoresizingMaskIntoConstraints = false
+
+        let currentDimension: NSLayoutDimension
+
+        let fromDimension = self.anchorForSize(sizeAnchor)
+        let toDimension = ofView.anchorForSize(toSizeAnchor)
+
+        let constraint: NSLayoutConstraint
+        if relation == .GreaterThanOrEqual {
+            constraint = fromDimension.constraintGreaterThanOrEqualToAnchor(toDimension, multiplier: multiplier, constant: constant)
+        } else if relation == .LessThanOrEqual {
+            constraint = fromDimension.constraintLessThanOrEqualToAnchor(toDimension, multiplier: multiplier, constant: constant)
+        } else {
+            constraint = fromDimension.constraintEqualToAnchor(toDimension, multiplier: multiplier, constant: constant)
+        }
+
+        constraint.priority = sizeAnchor.priority
+        constraint.active = activate
+
+        return constraint
     }
 
 }

        }
    }

    func _objcPinToView(view: UIView, inset: UIEdgeInsets = UIEdgeInsetsZero) -> [NSLayoutConstraint] {
        let viewConstraints: [NSLayoutConstraint] = [
            self.leadingAnchor.constraintEqualToAnchor(view.leadingAnchor, constant: inset.left),

    func setSize(sizeAnchor: SizeAnchor, relation: NSLayoutRelation = .Equal, activate: Bool = true) -> NSLayoutConstraint {
        self.translatesAutoresizingMaskIntoConstraints = false

        let currentDimension = self.anchorForSize(sizeAnchor)

        let constraint: NSLayoutConstraint
        if relation == .GreaterThanOrEqual {
