Skip to content

Commit

Permalink
[TextFields] Constraint correction and cleanup. (#1665)
Browse files Browse the repository at this point in the history
  • Loading branch information
willlarche committed Jul 20, 2017
1 parent 9e41781 commit df0d4cb
Showing 1 changed file with 21 additions and 14 deletions.
35 changes: 21 additions & 14 deletions components/TextFields/src/private/MDCTextInputCommonFundament.m
Expand Up @@ -251,6 +251,8 @@ - (void)setupClearButton {
attribute:NSLayoutAttributeWidth
multiplier:1
constant:0];
height.priority = UILayoutPriorityDefaultLow;

self.clearButtonWidth =
[NSLayoutConstraint constraintWithItem:_clearButton
attribute:NSLayoutAttributeWidth
Expand All @@ -259,6 +261,8 @@ - (void)setupClearButton {
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1
constant:MDCTextInputClearButtonImageSquareWidthHeight];
self.clearButtonWidth.priority = UILayoutPriorityDefaultLow;

NSLayoutConstraint *bottom = [NSLayoutConstraint
constraintWithItem:_clearButton
attribute:NSLayoutAttributeBottom
Expand All @@ -267,13 +271,17 @@ - (void)setupClearButton {
attribute:NSLayoutAttributeTop
multiplier:1
constant:-1 * MDCTextInputHalfPadding + MDCTextInputClearButtonImageBuiltInPadding];
bottom.priority = UILayoutPriorityDefaultLow;

self.placeholderTrailing = [NSLayoutConstraint constraintWithItem:_placeholderLabel
attribute:NSLayoutAttributeTrailing
relatedBy:NSLayoutRelationLessThanOrEqual
toItem:_clearButton
attribute:NSLayoutAttributeTrailing
multiplier:1
constant:MDCTextInputHalfPadding];
self.placeholderTrailing.priority = UILayoutPriorityDefaultLow;

NSLayoutConstraint *trailingSuperview =
[NSLayoutConstraint constraintWithItem:_clearButton
attribute:NSLayoutAttributeTrailing
Expand All @@ -282,11 +290,6 @@ - (void)setupClearButton {
attribute:NSLayoutAttributeTrailing
multiplier:1
constant:MDCTextInputClearButtonImageBuiltInPadding];

height.priority = UILayoutPriorityDefaultLow;
self.clearButtonWidth.priority = UILayoutPriorityDefaultLow;
bottom.priority = UILayoutPriorityDefaultLow;
self.placeholderTrailing.priority = UILayoutPriorityDefaultLow;
trailingSuperview.priority = UILayoutPriorityDefaultLow;

[NSLayoutConstraint activateConstraints:@[
Expand Down Expand Up @@ -408,22 +411,25 @@ - (void)setupUnderlineView {
[self.textInput addSubview:_underline];
[self.textInput sendSubviewToBack:_underline];

[NSLayoutConstraint constraintWithItem:_underline
NSLayoutConstraint *underlineLeading = [NSLayoutConstraint constraintWithItem:_underline
attribute:NSLayoutAttributeLeading
relatedBy:NSLayoutRelationEqual
toItem:_relativeSuperview
attribute:NSLayoutAttributeLeading
multiplier:1
constant:0]
.active = YES;
[NSLayoutConstraint constraintWithItem:_underline
constant:0];
underlineLeading.priority = UILayoutPriorityDefaultLow;
underlineLeading.active = YES;

NSLayoutConstraint *underlineTrailing = [NSLayoutConstraint constraintWithItem:_underline
attribute:NSLayoutAttributeTrailing
relatedBy:NSLayoutRelationEqual
toItem:_relativeSuperview
attribute:NSLayoutAttributeTrailing
multiplier:1
constant:0]
.active = YES;
constant:0];
underlineTrailing.priority = UILayoutPriorityDefaultLow;
underlineTrailing.active = YES;

CGFloat estimatedTextHeight = MDCCeil(self.font.lineHeight * 2.f) / 2.f;
_underlineY =
Expand Down Expand Up @@ -811,6 +817,7 @@ - (void)updatePlaceholderPosition {
attribute:NSLayoutAttributeTop
multiplier:1
constant:[self textContainerInset].top];
[self.placeholderTop setPriority:UILayoutPriorityDefaultLow];

// This can be affected by .leftView and .rightView.
// See updatePlaceholderToOverlayViewsPosition()
Expand All @@ -821,6 +828,8 @@ - (void)updatePlaceholderPosition {
attribute:NSLayoutAttributeLeading
multiplier:1
constant:[self textContainerInset].left];
[self.placeholderLeading setPriority:UILayoutPriorityDefaultLow];

NSLayoutConstraint *placeholderTrailing =
[NSLayoutConstraint constraintWithItem:_placeholderLabel
attribute:NSLayoutAttributeTrailing
Expand All @@ -829,9 +838,7 @@ - (void)updatePlaceholderPosition {
attribute:NSLayoutAttributeTrailing
multiplier:1
constant:[self textContainerInset].right];

[self.placeholderTop setPriority:UILayoutPriorityDefaultLow];
[self.placeholderLeading setPriority:UILayoutPriorityDefaultLow];
placeholderTrailing.priority = UILayoutPriorityDefaultLow;

return @[ self.placeholderTop, self.placeholderLeading, placeholderTrailing ];
}
Expand Down

0 comments on commit df0d4cb

Please sign in to comment.