      - Returns: The width NSLayoutConstraint if found.
      */
     public var widthConstraint: NSLayoutConstraint? {
-        return constraintForView(self, attribute: .width)
+        return constraintForView(self, attribute: .width, existsOnView: self)
+    }
+    
+    /** Gets the trailing constraint if found.
+     
+     Example Usage for changing width property of a label :
+     
+     ```
+     label.trailingConstraint?.constant = 10
+     
+     // Animate if needed
+     UIView.animateWithDuration(0.3, animations:layoutIfNeeded)
+     ```
+     - Returns: The trailing NSLayoutConstraint if found.
+     */
+    public var trailingConstraint: NSLayoutConstraint? {
+        return constraintForView(self, attribute: .trailing, existsOnView: self.superview)
+    }
+    
+    /** Gets the leading constraint if found.
+     
+     Example Usage for changing width property of a label :
+     
+     ```
+     label.leadingConstraint?.constant = 10
+     
+     // Animate if needed
+     UIView.animateWithDuration(0.3, animations:layoutIfNeeded)
+     ```
+     - Returns: The leading NSLayoutConstraint if found.
+     */
+    public var leadingConstraint: NSLayoutConstraint? {
+        return constraintForView(self, attribute: .leading, existsOnView: self.superview)
     }
     
 }
 
-func constraintForView(_ v: UIView, attribute: NSLayoutAttribute) -> NSLayoutConstraint? {
-    if let spv = v.superview {
-        for c in spv.constraints {
-            if let fi = c.firstItem as? NSObject, fi == v && c.firstAttribute == attribute {
-                return c
-            }
-            if let si = c.secondItem as? NSObject, si == v && c.secondAttribute == attribute {
-                return c
-            }
+func constraintForView(_ v: UIView, attribute: NSLayoutAttribute, existsOnView: UIView?) -> NSLayoutConstraint? {
+    let target = existsOnView ?? v
+    for c in target.constraints {
+        if let fi = c.firstItem as? NSObject, fi == v && c.firstAttribute == attribute {
+            return c
+        }
+        if let si = c.secondItem as? NSObject, si == v && c.secondAttribute == attribute {
+            return c
         }
     }
     return nil

    - Returns: The right NSLayoutConstraint if found.
     */
    public var rightConstraint: NSLayoutConstraint? {
        return constraintForView(self, attribute: .right)
    }
        
    /** Gets the top constraint if found.

    - Returns: The top NSLayoutConstraint if found.
     */
    public var topConstraint: NSLayoutConstraint? {
        return constraintForView(self, attribute: .top, existsOnView: self.superview)
    }
    
    /** Gets the bottom constraint if found.
