View.swift 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. //
  2. // View.swift
  3. // Snappy
  4. //
  5. // Created by Jonas Budelmann on 25/07/14.
  6. // Copyright (c) 2014 Jonas Budelmann. All rights reserved.
  7. //
  8. import Foundation
  9. import UIKit
  10. typealias View = UIView
  11. extension View {
  12. var mas_left: ViewAttribute { return ViewAttribute(view: self, layoutAttribute: .Left) }
  13. var mas_top: ViewAttribute { return ViewAttribute(view: self, layoutAttribute: .Top) }
  14. var mas_right: ViewAttribute { return ViewAttribute(view: self, layoutAttribute: .Right) }
  15. var mas_bottom: ViewAttribute { return ViewAttribute(view: self, layoutAttribute: .Bottom) }
  16. var mas_leading: ViewAttribute { return ViewAttribute(view: self, layoutAttribute: .Leading) }
  17. var mas_trailing: ViewAttribute { return ViewAttribute(view: self, layoutAttribute: .Trailing) }
  18. var mas_width: ViewAttribute { return ViewAttribute(view: self, layoutAttribute: .Width) }
  19. var mas_height: ViewAttribute { return ViewAttribute(view: self, layoutAttribute: .Height) }
  20. var mas_centerX: ViewAttribute { return ViewAttribute(view: self, layoutAttribute: .CenterX) }
  21. var mas_centerY: ViewAttribute { return ViewAttribute(view: self, layoutAttribute: .CenterY) }
  22. var mas_baseline: ViewAttribute { return ViewAttribute(view: self, layoutAttribute: .Baseline) }
  23. func mas_makeConstraints(block: (make: ConstraintMaker) -> ()) {
  24. self.setTranslatesAutoresizingMaskIntoConstraints(false)
  25. let constraintMaker: ConstraintMaker = ConstraintMaker(view: self)
  26. block(make: constraintMaker)
  27. constraintMaker.install()
  28. }
  29. func mas_closestCommonSuperview(view: View) -> View {
  30. var closestCommonSuperview: View? = nil
  31. var secondViewSuperview: View = view
  32. while (!closestCommonSuperview && secondViewSuperview != nil) {
  33. var firstViewSuperview: View = self
  34. while (!closestCommonSuperview && firstViewSuperview != nil) {
  35. if (secondViewSuperview == firstViewSuperview) {
  36. closestCommonSuperview = secondViewSuperview
  37. }
  38. firstViewSuperview = firstViewSuperview.superview
  39. }
  40. secondViewSuperview = secondViewSuperview.superview
  41. }
  42. return closestCommonSuperview!
  43. }
  44. }