gngrwzrd

NSView+Constraints Additions

Nov 12th, 2014
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //header
  2. #import <Cocoa/Cocoa.h>
  3.  
  4. @interface NSView (GWAdditions)
  5.  
  6. - (void) removeConstraintsWithFirstAttribute:(NSLayoutAttribute) attribute;
  7. - (void) removeConstraintsWithSecondAttribute:(NSLayoutAttribute) attribute;
  8. - (void) removeConstraintsWithFirstAttribute:(NSLayoutAttribute) firstAttribute secondAttribute:(NSLayoutAttribute) secondAttribute;
  9. - (void) alignEdgeByConstraint:(NSLayoutAttribute) edge toView:(NSView *) view;
  10. - (void) alignEdgeByConstraint:(NSLayoutAttribute) edge toView:(NSView *) view atOffset:(CGFloat) offset;
  11. - (void) setWidthByConstraint:(CGFloat) width;
  12. - (void) setHeightByConstraint:(CGFloat) height;
  13. - (void) centerHorizonalByConstraintInView:(NSView *) view;
  14. - (void) centerVerticalByConstraintInView:(NSView *) view;
  15. - (void) matchHeightByConstraintToView:(NSView *) view;
  16. - (void) matchWidthByConstraintToView:(NSView *) view;
  17.  
  18. @end
  19.  
  20.  
  21. //implementation
  22.  
  23. #import "NSView+GWAdditions.h"
  24.  
  25. @implementation NSView (GWAdditions)
  26.  
  27. - (void) removeConstraintsWithFirstAttribute:(NSLayoutAttribute) attribute; {
  28.     NSMutableArray * remove = [NSMutableArray array];
  29.     for(NSLayoutConstraint * constraint in self.constraints) {
  30.         if(constraint.firstAttribute == attribute) {
  31.             [remove addObject:constraint];
  32.         }
  33.     }
  34.     if(remove.count > 0) {
  35.         [self removeConstraints:remove];
  36.     }
  37. }
  38.  
  39. - (void) removeConstraintsWithSecondAttribute:(NSLayoutAttribute) attribute; {
  40.     NSMutableArray * remove = [NSMutableArray array];
  41.     for(NSLayoutConstraint * constraint in self.constraints) {
  42.         if(constraint.secondAttribute == attribute) {
  43.             [remove addObject:constraint];
  44.         }
  45.     }
  46.     if(remove.count > 0) {
  47.         [self removeConstraints:remove];
  48.     }
  49. }
  50.  
  51. - (void) removeConstraintsWithFirstAttribute:(NSLayoutAttribute) firstAttribute secondAttribute:(NSLayoutAttribute) secondAttribute; {
  52.     NSMutableArray * remove = [NSMutableArray array];
  53.     for(NSLayoutConstraint * constraint in self.constraints) {
  54.         if(constraint.firstAttribute == firstAttribute && constraint.secondAttribute == secondAttribute) {
  55.             [remove addObject:constraint];
  56.         }
  57.     }
  58.     if(remove.count > 0) {
  59.         [self removeConstraints:remove];
  60.     }
  61. }
  62.  
  63. - (void) alignEdgeByConstraint:(NSLayoutAttribute) edge toView:(NSView *) view; {
  64.     [view addConstraint:[NSLayoutConstraint constraintWithItem:self attribute:edge relatedBy:NSLayoutRelationEqual toItem:view attribute:edge multiplier:1 constant:0]];
  65. }
  66.  
  67. - (void) alignEdgeByConstraint:(NSLayoutAttribute) edge toView:(NSView *) view atOffset:(CGFloat) offset; {
  68.     [view addConstraint:[NSLayoutConstraint constraintWithItem:self attribute:edge relatedBy:NSLayoutRelationEqual toItem:view attribute:edge multiplier:1 constant:offset]];
  69. }
  70.  
  71. - (void) matchWidthByConstraintToView:(NSView *) view; {
  72.     [view addConstraint:[NSLayoutConstraint constraintWithItem:self attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:view attribute:NSLayoutAttributeWidth multiplier:1 constant:0]];
  73. }
  74.  
  75. - (void) matchHeightByConstraintToView:(NSView *) view {
  76.     [view addConstraint:[NSLayoutConstraint constraintWithItem:self attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:view attribute:NSLayoutAttributeHeight multiplier:1 constant:0]];
  77. }
  78.  
  79. - (void) setWidthByConstraint:(CGFloat) width {
  80.     [self removeConstraintsWithFirstAttribute:NSLayoutAttributeWidth];
  81.     [self addConstraint:[NSLayoutConstraint constraintWithItem:self attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1 constant:width]];
  82. }
  83.  
  84. - (void) setHeightByConstraint:(CGFloat) height; {
  85.     [self removeConstraintsWithFirstAttribute:NSLayoutAttributeHeight];
  86.     [self addConstraint:[NSLayoutConstraint constraintWithItem:self attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1 constant:height]];
  87. }
  88.  
  89. - (void) centerHorizonalByConstraintInView:(NSView *) view; {
  90.     [self removeConstraintsWithFirstAttribute:NSLayoutAttributeCenterX];
  91.     [view addConstraint:[NSLayoutConstraint constraintWithItem:self attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:view attribute:NSLayoutAttributeCenterX multiplier:1 constant:0]];
  92. }
  93.  
  94. - (void) centerVerticalByConstraintInView:(NSView *) view; {
  95.     [self removeConstraintsWithFirstAttribute:NSLayoutAttributeCenterY];
  96.     [view addConstraint:[NSLayoutConstraint constraintWithItem:self attribute:NSLayoutAttributeCenterY relatedBy:NSLayoutRelationEqual toItem:view attribute:NSLayoutAttributeCenterY multiplier:1 constant:0]];
  97. }
  98.  
  99. @end
Advertisement
Add Comment
Please, Sign In to add comment