Skip to content

Commit

Permalink
[TextControls] Separate side padding into leading/trailing padding
Browse files Browse the repository at this point in the history
This is pre-work for b/158109599.

PiperOrigin-RevId: 316874616
  • Loading branch information
andrewoverton authored and material-automation committed Jun 17, 2020
1 parent b98382a commit b7f5b0d
Show file tree
Hide file tree
Showing 7 changed files with 45 additions and 38 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,8 @@ - (void)calculateLayoutWithSize:(CGSize)size
trailingAssistiveLabel:trailingAssistiveLabel
assistiveLabelDrawPriority:assistiveLabelDrawPriority
customAssistiveLabelDrawPriority:customAssistiveLabelDrawPriority
horizontalEdgePadding:kHorizontalPadding
leadingEdgePadding:kHorizontalPadding
trailingEdgePadding:kHorizontalPadding
paddingAboveAssistiveLabels:positioningReference.paddingAboveAssistiveLabels
paddingBelowAssistiveLabels:positioningReference.paddingBelowAssistiveLabels
isRTL:isRTL];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,8 @@
assistiveLabelDrawPriority:
(MDCTextControlAssistiveLabelDrawPriority)assistiveLabelDrawPriority
customAssistiveLabelDrawPriority:(CGFloat)customAssistiveLabelDrawPriority
horizontalEdgePadding:(CGFloat)horizontalEdgePadding
leadingEdgePadding:(CGFloat)leadingEdgePadding
trailingEdgePadding:(CGFloat)trailingEdgePadding
paddingAboveAssistiveLabels:(CGFloat)paddingAboveAssistiveLabels
paddingBelowAssistiveLabels:(CGFloat)paddingBelowAssistiveLabels
isRTL:(BOOL)isRTL;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,8 @@ - (instancetype)initWithWidth:(CGFloat)superviewWidth
assistiveLabelDrawPriority:
(MDCTextControlAssistiveLabelDrawPriority)assistiveLabelDrawPriority
customAssistiveLabelDrawPriority:(CGFloat)customAssistiveLabelDrawPriority
horizontalEdgePadding:(CGFloat)horizontalEdgePadding
leadingEdgePadding:(CGFloat)leadingEdgePadding
trailingEdgePadding:(CGFloat)trailingEdgePadding
paddingAboveAssistiveLabels:(CGFloat)paddingAboveAssistiveLabels
paddingBelowAssistiveLabels:(CGFloat)paddingBelowAssistiveLabels
isRTL:(BOOL)isRTL {
Expand All @@ -43,7 +44,8 @@ - (instancetype)initWithWidth:(CGFloat)superviewWidth
trailingAssistiveLabel:trailingAssistiveLabel
assistiveLabelDrawPriority:assistiveLabelDrawPriority
customAssistiveLabelDrawPriority:customAssistiveLabelDrawPriority
horizontalEdgePadding:horizontalEdgePadding
leadingEdgePadding:leadingEdgePadding
trailingEdgePadding:trailingEdgePadding
paddingAboveAssistiveLabels:(CGFloat)paddingAboveAssistiveLabels
paddingBelowAssistiveLabels:(CGFloat)paddingBelowAssistiveLabels
isRTL:isRTL];
Expand All @@ -60,12 +62,15 @@ - (void)calculateLayoutWithSuperviewWidth:(CGFloat)superviewWidth
assistiveLabelDrawPriority:
(MDCTextControlAssistiveLabelDrawPriority)assistiveLabelDrawPriority
customAssistiveLabelDrawPriority:(CGFloat)customAssistiveLabelDrawPriority
horizontalEdgePadding:(CGFloat)horizontalEdgePadding
leadingEdgePadding:(CGFloat)leadingEdgePadding
trailingEdgePadding:(CGFloat)trailingEdgePadding
paddingAboveAssistiveLabels:(CGFloat)paddingAboveAssistiveLabels
paddingBelowAssistiveLabels:(CGFloat)paddingBelowAssistiveLabels
isRTL:(BOOL)isRTL {
CGFloat assistiveLabelsCombinedMinX = horizontalEdgePadding;
CGFloat assistiveLabelsCombinedMaxX = superviewWidth - horizontalEdgePadding;
CGFloat leftEdgePadding = isRTL ? trailingEdgePadding : leadingEdgePadding;
CGFloat rightEdgePadding = isRTL ? leadingEdgePadding : trailingEdgePadding;
CGFloat assistiveLabelsCombinedMinX = leftEdgePadding;
CGFloat assistiveLabelsCombinedMaxX = superviewWidth - rightEdgePadding;
CGFloat assistiveLabelsCombinedMaxWidth =
assistiveLabelsCombinedMaxX - assistiveLabelsCombinedMinX;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,16 @@
@protocol MDCTextControlHorizontalPositioning

/**
The amount of horizontal padding between the leftmost subview and the left edge of the screen as
well as the rightmost view and the right edge of the screen.
*/
@property(nonatomic, assign) CGFloat horizontalEdgePadding;
The amount of horizontal padding between the leading edge of the view and the subview closest to
it.
*/
@property(nonatomic, assign) CGFloat leadingEdgePadding;

/**
The amount of horizontal padding between the trailing edge of the view and the subview closest to
it.
*/
@property(nonatomic, assign) CGFloat trailingEdgePadding;

/**
The amount of horizontal padding between the various subviews.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,15 @@
12.0f;

@implementation MDCTextControlHorizontalPositioningReference
@synthesize horizontalEdgePadding = _horizontalEdgePadding;
@synthesize leadingEdgePadding = _leadingEdgePadding;
@synthesize trailingEdgePadding = _trailingEdgePadding;
@synthesize horizontalInterItemSpacing = _horizontalInterItemSpacing;

- (instancetype)init {
self = [super init];
if (self) {
self.horizontalEdgePadding = kMDCTextControlHorizontalPositioningReferenceHorizontalEdgePadding;
self.leadingEdgePadding = kMDCTextControlHorizontalPositioningReferenceHorizontalEdgePadding;
self.trailingEdgePadding = kMDCTextControlHorizontalPositioningReferenceHorizontalEdgePadding;
self.horizontalInterItemSpacing =
kMDCTextControlHorizontalPositioningReferenceHorizontalInterItemPadding;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,40 +111,41 @@ - (void)calculateLayoutWithTextFieldSize:(CGSize)textFieldSize
isEditing:isEditing
text:text];

CGFloat horizontalEdgePadding = horizontalPositioningReference.horizontalEdgePadding;
CGFloat leadingEdgePadding = horizontalPositioningReference.leadingEdgePadding;
CGFloat trailingEdgePadding = horizontalPositioningReference.trailingEdgePadding;
CGFloat leftEdgePadding = isRTL ? trailingEdgePadding : leadingEdgePadding;
CGFloat rightEdgePadding = isRTL ? leadingEdgePadding : trailingEdgePadding;
CGFloat horizontalInterItemPadding = horizontalPositioningReference.horizontalInterItemSpacing;

CGFloat leftViewWidth = CGRectGetWidth(leftView.frame);
CGFloat leftViewMinX = 0;
CGFloat leftViewMaxX = 0;
if (displaysLeftView) {
leftViewMinX = horizontalEdgePadding;
leftViewMinX = leftEdgePadding;
leftViewMaxX = leftViewMinX + leftViewWidth;
}

CGFloat textFieldWidth = textFieldSize.width;
CGFloat rightViewMinX = 0;
if (displaysRightView) {
CGFloat rightViewMaxX = textFieldWidth - horizontalEdgePadding;
CGFloat rightViewMaxX = textFieldWidth - rightEdgePadding;
rightViewMinX = rightViewMaxX - CGRectGetWidth(rightView.frame);
}

CGFloat clearButtonMinX = 0;
if (isRTL) {
clearButtonMinX =
displaysLeftView ? leftViewMaxX + horizontalInterItemPadding : horizontalEdgePadding;
displaysLeftView ? leftViewMaxX + horizontalInterItemPadding : leftEdgePadding;
} else {
CGFloat clearButtonMaxX = displaysRightView ? rightViewMinX - horizontalInterItemPadding
: textFieldWidth - horizontalEdgePadding;
: textFieldWidth - rightEdgePadding;
clearButtonMinX = clearButtonMaxX - clearButtonSideLength;
}

CGFloat textRectMinX = 0;
CGFloat textRectMaxX = 0;
CGFloat labelMinX = 0;
CGFloat labelMaxX = 0;
CGFloat floatingLabelMinX = 0;
CGFloat floatingLabelMaxX = 0;

if (isRTL) {
if (displaysClearButton) {
Expand All @@ -153,8 +154,7 @@ - (void)calculateLayoutWithTextFieldSize:(CGSize)textFieldSize
labelMinX = textRectMinX;
floatingLabelMinX = clearButtonMinX;
} else {
textRectMinX =
displaysLeftView ? leftViewMaxX + horizontalInterItemPadding : horizontalEdgePadding;
textRectMinX = displaysLeftView ? leftViewMaxX + horizontalInterItemPadding : leftEdgePadding;
labelMinX = textRectMinX;
floatingLabelMinX = textRectMinX;
}
Expand All @@ -163,22 +163,16 @@ - (void)calculateLayoutWithTextFieldSize:(CGSize)textFieldSize
} else {
textRectMaxX = textFieldWidth - horizontalInterItemPadding;
}
labelMaxX = textRectMaxX;
floatingLabelMaxX = labelMaxX;
} else {
textRectMinX =
displaysLeftView ? leftViewMaxX + horizontalInterItemPadding : horizontalEdgePadding;
textRectMinX = displaysLeftView ? leftViewMaxX + horizontalInterItemPadding : leftEdgePadding;
labelMinX = textRectMinX;
floatingLabelMinX = labelMinX;
if (displaysClearButton) {
textRectMaxX = clearButtonMinX - horizontalInterItemPadding;
} else {
textRectMaxX = displaysRightView ? rightViewMinX - horizontalInterItemPadding
: textFieldWidth - horizontalEdgePadding;
: textFieldWidth - rightEdgePadding;
}
labelMaxX = textRectMaxX;
floatingLabelMaxX = displaysRightView ? rightViewMinX - horizontalInterItemPadding
: textFieldWidth - horizontalEdgePadding;
}

CGFloat textRectMinYNormal = positioningReference.paddingBetweenContainerTopAndNormalLabel;
Expand Down Expand Up @@ -224,17 +218,13 @@ - (void)calculateLayoutWithTextFieldSize:(CGSize)textFieldSize
font:font
floatingFont:floatingFont
floatingLabelMinY:floatingLabelMinY
labelMinX:labelMinX
labelMaxX:labelMaxX
textRect:textRectNormal
isRTL:isRTL];
CGRect labelFrameFloating = [self labelFrameWithText:label.text
labelPosition:MDCTextControlLabelPositionFloating
font:font
floatingFont:floatingFont
floatingLabelMinY:floatingLabelMinY
labelMinX:floatingLabelMinX
labelMaxX:floatingLabelMaxX
textRect:textRectNormal
isRTL:isRTL];

Expand All @@ -244,7 +234,8 @@ - (void)calculateLayoutWithTextFieldSize:(CGSize)textFieldSize
trailingAssistiveLabel:trailingAssistiveLabel
assistiveLabelDrawPriority:assistiveLabelDrawPriority
customAssistiveLabelDrawPriority:customAssistiveLabelDrawPriority
horizontalEdgePadding:horizontalEdgePadding
leadingEdgePadding:leadingEdgePadding
trailingEdgePadding:trailingEdgePadding
paddingAboveAssistiveLabels:positioningReference.paddingAboveAssistiveLabels
paddingBelowAssistiveLabels:positioningReference.paddingBelowAssistiveLabels
isRTL:isRTL];
Expand Down Expand Up @@ -347,10 +338,10 @@ - (CGRect)labelFrameWithText:(NSString *)text
font:(UIFont *)font
floatingFont:(UIFont *)floatingFont
floatingLabelMinY:(CGFloat)floatingLabelMinY
labelMinX:(CGFloat)labelMinX
labelMaxX:(CGFloat)labelMaxX
textRect:(CGRect)textRect
isRTL:(BOOL)isRTL {
CGFloat labelMinX = CGRectGetMinX(textRect);
CGFloat labelMaxX = CGRectGetMaxX(textRect);
CGFloat maxWidth = labelMaxX - labelMinX;
CGSize size = CGSizeZero;
CGRect rect = CGRectZero;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,8 @@ - (UIFont *)floatingFontWithNormalFont:(UIFont *)font {
- (nonnull MDCTextControlHorizontalPositioningReference *)horizontalPositioningReference {
MDCTextControlHorizontalPositioningReference *positioningReference =
[[MDCTextControlHorizontalPositioningReference alloc] init];
positioningReference.horizontalEdgePadding = kUnderlinedHorizontalEdgePaddingDefault;
positioningReference.leadingEdgePadding = kUnderlinedHorizontalEdgePaddingDefault;
positioningReference.trailingEdgePadding = kUnderlinedHorizontalEdgePaddingDefault;
return positioningReference;
}

Expand Down

0 comments on commit b7f5b0d

Please sign in to comment.