UIView+AutoLayout.m 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. //
  2. // View+AutoLayout.m
  3. // Category
  4. //
  5. // Created by em.
  6. // Copyright © 2017년 em. All rights reserved.
  7. //
  8. #import "UIView+AutoLayout.h"
  9. @implementation UIView(AutoLayout)
  10. - (void)addTopConstant:(CGFloat)constant {
  11. [self disableTranslatesAutoresizingMaskIntoConstraints] ;
  12. [self.superview addConstraint:[NSLayoutConstraint constraintWithItem:self
  13. attribute:NSLayoutAttributeTop
  14. relatedBy:NSLayoutRelationEqual
  15. toItem:self.superview
  16. attribute:NSLayoutAttributeTop
  17. multiplier:1.0f
  18. constant:constant]] ;
  19. }
  20. - (void)addBottomConstant:(CGFloat)constant {
  21. [self disableTranslatesAutoresizingMaskIntoConstraints] ;
  22. [self.superview addConstraint:[NSLayoutConstraint constraintWithItem:self
  23. attribute:NSLayoutAttributeBottom
  24. relatedBy:NSLayoutRelationEqual
  25. toItem:self.superview
  26. attribute:NSLayoutAttributeBottom
  27. multiplier:1.0f
  28. constant:constant]] ;
  29. }
  30. - (void)addLeadingConstant:(CGFloat)constant {
  31. [self disableTranslatesAutoresizingMaskIntoConstraints] ;
  32. [self.superview addConstraint:[NSLayoutConstraint constraintWithItem:self
  33. attribute:NSLayoutAttributeLeading
  34. relatedBy:NSLayoutRelationEqual
  35. toItem:self.superview
  36. attribute:NSLayoutAttributeLeading
  37. multiplier:1.0f
  38. constant:constant]] ;
  39. }
  40. - (void)addTrailingConstant:(CGFloat)constant {
  41. [self disableTranslatesAutoresizingMaskIntoConstraints] ;
  42. [self.superview addConstraint:[NSLayoutConstraint constraintWithItem:self
  43. attribute:NSLayoutAttributeTrailing
  44. relatedBy:NSLayoutRelationEqual
  45. toItem:self.superview
  46. attribute:NSLayoutAttributeTrailing
  47. multiplier:1.0f
  48. constant:constant]] ;
  49. }
  50. - (void)addWidthConstant:(CGFloat)constant {
  51. [self disableTranslatesAutoresizingMaskIntoConstraints] ;
  52. [self addConstraint:[NSLayoutConstraint constraintWithItem:self
  53. attribute:NSLayoutAttributeWidth
  54. relatedBy:NSLayoutRelationEqual
  55. toItem:nil
  56. attribute:0
  57. multiplier:1.0f
  58. constant:constant]] ;
  59. }
  60. - (void)addHeightConstant:(CGFloat)constant {
  61. [self disableTranslatesAutoresizingMaskIntoConstraints] ;
  62. [self addConstraint:[NSLayoutConstraint constraintWithItem:self
  63. attribute:NSLayoutAttributeHeight
  64. relatedBy:NSLayoutRelationEqual
  65. toItem:nil
  66. attribute:0
  67. multiplier:1.0f
  68. constant:constant]] ;
  69. }
  70. - (void)addCenterHorizontalConstant:(CGFloat)constant {
  71. [self disableTranslatesAutoresizingMaskIntoConstraints] ;
  72. [self.superview addConstraint:[NSLayoutConstraint constraintWithItem:self
  73. attribute:NSLayoutAttributeCenterX
  74. relatedBy:NSLayoutRelationEqual
  75. toItem:self.superview
  76. attribute:NSLayoutAttributeCenterX
  77. multiplier:1.0f
  78. constant:constant]] ;
  79. }
  80. - (void)addCenterVerticalConstant:(CGFloat)constant {
  81. [self disableTranslatesAutoresizingMaskIntoConstraints] ;
  82. [self.superview addConstraint:[NSLayoutConstraint constraintWithItem:self
  83. attribute:NSLayoutAttributeCenterY
  84. relatedBy:NSLayoutRelationEqual
  85. toItem:self.superview
  86. attribute:NSLayoutAttributeCenterY
  87. multiplier:1.0f
  88. constant:constant]] ;
  89. }
  90. - (void)addHorizontalSpaceTo:(id)relateView constant:(CGFloat)constant {
  91. [self disableTranslatesAutoresizingMaskIntoConstraints] ;
  92. [self.superview addConstraint:[NSLayoutConstraint constraintWithItem:self
  93. attribute:NSLayoutAttributeLeading
  94. relatedBy:NSLayoutRelationEqual
  95. toItem:relateView
  96. attribute:NSLayoutAttributeTrailing
  97. multiplier:1.0f
  98. constant:constant]] ;
  99. //[self.leadingAnchor constraintEqualToAnchor:((UIView *)relateView).trailingAnchor constant:constant].active = YES ;
  100. }
  101. - (void)addVerticalSpaceTo:(id)relateView constant:(CGFloat)constant {
  102. [self disableTranslatesAutoresizingMaskIntoConstraints] ;
  103. [self.superview addConstraint:[NSLayoutConstraint constraintWithItem:self
  104. attribute:NSLayoutAttributeTop
  105. relatedBy:NSLayoutRelationEqual
  106. toItem:relateView
  107. attribute:NSLayoutAttributeBottom
  108. multiplier:1.0f
  109. constant:constant]] ;
  110. //[self.topAnchor constraintEqualToAnchor:((UIView *)relateView).bottomAnchor constant:constant].active = YES ;
  111. }
  112. - (void)fillHorizontalToSuperview {
  113. [self addLeadingConstant:0.0f] ;
  114. [self addTrailingConstant:0.0f] ;
  115. }
  116. - (void)fillVerticalToSuperview {
  117. [self addTopConstant:0.0f] ;
  118. [self addBottomConstant:0.0f] ;
  119. }
  120. - (void)fillToSuperView {
  121. [self fillHorizontalToSuperview] ;
  122. [self fillVerticalToSuperview] ;
  123. }
  124. - (void)disableTranslatesAutoresizingMaskIntoConstraints {
  125. [self setTranslatesAutoresizingMaskIntoConstraints:NO] ;
  126. // if( self.translatesAutoresizingMaskIntoConstraints ) {
  127. //
  128. // }
  129. }
  130. @end