Skip to content

Commit ac4d03d

Browse files
committed
Instead of adding/removing constraints change priorities
Reworked this project to avoid adding and removing constraints and use a simpler and more efficient approach of changing the priorities of the yellow and blue view constraints.
1 parent 810f0fd commit ac4d03d

File tree

3 files changed

+14
-37
lines changed

3 files changed

+14
-37
lines changed

AnimatedConstraints/AnimatedConstraints/Base.lproj/Main.storyboard

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2-
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="7702" systemVersion="14D136" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="0g1-Te-Zt4">
2+
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="7706" systemVersion="14D136" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="0g1-Te-Zt4">
33
<dependencies>
4-
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="7701"/>
4+
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="7703"/>
55
<capability name="Constraints to layout margins" minToolsVersion="6.0"/>
66
</dependencies>
77
<scenes>
@@ -44,7 +44,8 @@
4444
<constraint firstItem="Jn4-Fc-5wA" firstAttribute="top" secondItem="hcV-gR-b2V" secondAttribute="bottom" constant="8" symbolic="YES" id="3C5-UG-YKE"/>
4545
<constraint firstItem="Jn4-Fc-5wA" firstAttribute="leading" secondItem="8bC-Xf-vdC" secondAttribute="leadingMargin" id="5rH-4Y-RBI"/>
4646
<constraint firstItem="hcV-gR-b2V" firstAttribute="top" secondItem="y3c-jy-aDJ" secondAttribute="bottom" constant="8" symbolic="YES" id="6p4-Ep-Ba1"/>
47-
<constraint firstAttribute="trailingMargin" secondItem="zC1-3A-yfR" secondAttribute="trailing" placeholder="YES" id="KIk-pT-AKn"/>
47+
<constraint firstAttribute="trailingMargin" secondItem="Jn4-Fc-5wA" secondAttribute="trailing" priority="750" id="Fhn-Ts-zfQ"/>
48+
<constraint firstAttribute="trailingMargin" secondItem="zC1-3A-yfR" secondAttribute="trailing" priority="751" id="KIk-pT-AKn"/>
4849
<constraint firstItem="hcV-gR-b2V" firstAttribute="leading" secondItem="0eJ-7b-rVL" secondAttribute="trailing" constant="8" symbolic="YES" id="KIy-Ob-1Hz"/>
4950
<constraint firstItem="wfy-db-euE" firstAttribute="top" secondItem="Jn4-Fc-5wA" secondAttribute="bottom" constant="8" symbolic="YES" id="Kzw-j6-8b9"/>
5051
<constraint firstItem="zC1-3A-yfR" firstAttribute="width" secondItem="Jn4-Fc-5wA" secondAttribute="width" id="N4W-NY-y4j"/>
@@ -58,9 +59,11 @@
5859
<navigationItem key="navigationItem" title="Animated Constraints" id="alD-TT-bsG"/>
5960
<connections>
6061
<outlet property="blueView" destination="zC1-3A-yfR" id="bee-BX-MMD"/>
62+
<outlet property="blueViewConstraint" destination="KIk-pT-AKn" id="bGy-5m-Eih"/>
6163
<outlet property="modeSwitch" destination="hcV-gR-b2V" id="L9A-UK-jwZ"/>
6264
<outlet property="viewSpacingContraint" destination="tzy-7H-lLE" id="dOn-v5-4bA"/>
6365
<outlet property="yellowView" destination="Jn4-Fc-5wA" id="KsK-ud-Zdf"/>
66+
<outlet property="yellowViewConstraint" destination="Fhn-Ts-zfQ" id="i71-cw-SAv"/>
6467
</connections>
6568
</viewController>
6669
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>

AnimatedConstraints/AnimatedConstraints/ViewController.m

Lines changed: 6 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ @interface ViewController ()
4141
@property (weak, nonatomic) IBOutlet UIView *blueView;
4242

4343
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *viewSpacingContraint;
44-
@property (strong, nonatomic) NSLayoutConstraint *yellowViewConstraint;
45-
@property (strong, nonatomic) NSLayoutConstraint *blueViewConstraint;
44+
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *blueViewConstraint;
45+
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *yellowViewConstraint;
4646

4747
@end
4848

@@ -69,43 +69,15 @@ - (IBAction)enableMode:(UISwitch *)sender {
6969
}];
7070
}
7171

72-
// "[yellowView]-|"
73-
- (NSLayoutConstraint *)yellowViewConstraint {
74-
if (!_yellowViewConstraint) {
75-
_yellowViewConstraint = [NSLayoutConstraint constraintWithItem:self.yellowView
76-
attribute:NSLayoutAttributeTrailing
77-
relatedBy:NSLayoutRelationEqual
78-
toItem:self.view
79-
attribute:NSLayoutAttributeTrailingMargin
80-
multiplier:1.0
81-
constant:0.0];
82-
}
83-
return _yellowViewConstraint;
84-
}
85-
86-
// "[blueView]-|"
87-
- (NSLayoutConstraint *)blueViewConstraint {
88-
if (!_blueViewConstraint) {
89-
_blueViewConstraint = [NSLayoutConstraint constraintWithItem:self.blueView
90-
attribute:NSLayoutAttributeTrailing
91-
relatedBy:NSLayoutRelationEqual
92-
toItem:self.view
93-
attribute:NSLayoutAttributeTrailingMargin
94-
multiplier:1.0
95-
constant:0.0];
96-
}
97-
return _blueViewConstraint;
98-
}
99-
10072
- (void)updateConstraintsForMode {
10173
if (self.modeSwitch.isOn) {
10274
self.viewSpacingContraint.constant = 8.0;
103-
[self.view removeConstraint:self.yellowViewConstraint];
104-
[self.view addConstraint:self.blueViewConstraint];
75+
self.yellowViewConstraint.priority = 750;
76+
self.blueViewConstraint.priority = 751;
10577
} else {
106-
[self.view removeConstraint:self.blueViewConstraint];
107-
[self.view addConstraint:self.yellowViewConstraint];
10878
self.viewSpacingContraint.constant = self.view.frame.size.width;
79+
self.blueViewConstraint.priority = 750;
80+
self.yellowViewConstraint.priority = 751;
10981
}
11082
}
11183

AnimatedConstraints/README

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
=======================================================================
22
AnimatedConstraints
33

4+
Version 1.1 21 May 2015 Switch to changing priorities rather than
5+
adding/removing constraints.
46
Version 1.0 18 May 2015 Initial Version
57
=======================================================================
68

0 commit comments

Comments
 (0)