Răsfoiți Sursa

1.修改iOS LayoutConstraint抗拉伸和抗压缩约束。

Pen Li 7 ani în urmă
părinte
comite
201f2b1b97

+ 8 - 0
common/LayoutConstraint/UIView+RAConstraint.h

@@ -43,6 +43,14 @@
 @property (nonatomic,strong,readonly) RAConstraint *ra_safeAreaRight API_AVAILABLE(ios(11.0),tvos(11.0));
 @property (nonatomic,strong,readonly) RAConstraint *ra_safeAreaBottom API_AVAILABLE(ios(11.0),tvos(11.0));
 
+// 抗拉伸
+@property (nonatomic,assign) UILayoutPriority ra_horizontalHuggingPriority;
+@property (nonatomic,assign) UILayoutPriority ra_verticalHuggingPriority;
+
+// 抗压缩
+@property (nonatomic,assign) UILayoutPriority ra_horizontalCompressionResistancePriority;
+@property (nonatomic,assign) UILayoutPriority ra_verticalCompressionResistancePriority;
+
 @end
 
 #pragma mark - UIView

+ 27 - 0
common/LayoutConstraint/UIView+RAConstraint.m

@@ -299,6 +299,8 @@
 
 @end
 
+static const UILayoutPriority kRALayoutPriorityNone = -1;
+
 @implementation RAConstraintMaker
 
 - (instancetype)initWithAppliedView:(UIView *)view {
@@ -316,6 +318,12 @@
                                                 self.height
                                                 ]];
         
+        self.ra_horizontalHuggingPriority = kRALayoutPriorityNone;
+        self.ra_verticalHuggingPriority = kRALayoutPriorityNone;
+        
+        self.ra_horizontalCompressionResistancePriority = kRALayoutPriorityNone;
+        self.ra_verticalCompressionResistancePriority = kRALayoutPriorityNone;
+        
         __weak typeof(self) weakSelf = self;
         self.ra_modifyConstraint = [^(NSString *identifier, CGFloat constant) {
             
@@ -490,6 +498,25 @@
 - (void)ra_install {
     if (self.appliedView) {
         
+        // 抗拉伸
+        if (self.ra_horizontalHuggingPriority != kRALayoutPriorityNone) {
+            [self.appliedView setContentHuggingPriority:self.ra_horizontalHuggingPriority forAxis:UILayoutConstraintAxisHorizontal];
+        }
+        
+        if (self.ra_verticalHuggingPriority != kRALayoutPriorityNone) {
+            [self.appliedView setContentHuggingPriority:self.ra_verticalHuggingPriority forAxis:UILayoutConstraintAxisVertical];
+        }
+        
+        // 抗压缩
+        if (self.ra_horizontalCompressionResistancePriority != kRALayoutPriorityNone) {
+            [self.appliedView setContentCompressionResistancePriority:self.ra_horizontalCompressionResistancePriority forAxis:UILayoutConstraintAxisHorizontal];
+        }
+        
+        if (self.ra_verticalCompressionResistancePriority != kRALayoutPriorityNone) {
+            [self.appliedView setContentCompressionResistancePriority:self.ra_verticalCompressionResistancePriority forAxis:UILayoutConstraintAxisVertical];
+        }
+        
+        // normal constraint
         for (RAConstraint *constraint in self.constraints) {
             [constraint ra_install];
         }