| Index: ios/chrome/browser/payments/cells/payments_text_item.mm
|
| diff --git a/ios/chrome/browser/payments/cells/payments_text_item.mm b/ios/chrome/browser/payments/cells/payments_text_item.mm
|
| index 274f93e6ed5942a5b3aecb23a689a299428c7926..bc026ad81a13a03756cc854def93f98057c6bd22 100644
|
| --- a/ios/chrome/browser/payments/cells/payments_text_item.mm
|
| +++ b/ios/chrome/browser/payments/cells/payments_text_item.mm
|
| @@ -18,14 +18,19 @@ const CGFloat kHorizontalPadding = 16;
|
| // Padding of the top and bottom edges of the cell.
|
| const CGFloat kVerticalPadding = 16;
|
|
|
| -// Spacing between the image and the text label.
|
| -const CGFloat kHorizontalSpacingBetweenImageAndLabel = 8;
|
| +// Spacing between the image and the text labels.
|
| +const CGFloat kHorizontalSpacingBetweenImageAndLabels = 8;
|
| +
|
| +// Spacing between the labels.
|
| +const CGFloat kVerticalSpacingBetweenLabels = 8;
|
| } // namespace
|
|
|
| @implementation PaymentsTextItem
|
|
|
| @synthesize text = _text;
|
| +@synthesize detailText = _detailText;
|
| @synthesize image = _image;
|
| +@synthesize accessoryType = _accessoryType;
|
|
|
| #pragma mark CollectionViewItem
|
|
|
| @@ -39,21 +44,25 @@ const CGFloat kHorizontalSpacingBetweenImageAndLabel = 8;
|
|
|
| - (void)configureCell:(PaymentsTextCell*)cell {
|
| [super configureCell:cell];
|
| + cell.accessoryType = self.accessoryType;
|
| cell.textLabel.text = self.text;
|
| + cell.detailTextLabel.text = self.detailText;
|
| cell.imageView.image = self.image;
|
| }
|
|
|
| @end
|
|
|
| @interface PaymentsTextCell () {
|
| - NSLayoutConstraint* _textLeadingAnchorConstraint;
|
| + NSLayoutConstraint* _labelsLeadingAnchorConstraint;
|
| NSLayoutConstraint* _imageLeadingAnchorConstraint;
|
| + UIStackView* _stackView;
|
| }
|
| @end
|
|
|
| @implementation PaymentsTextCell
|
|
|
| @synthesize textLabel = _textLabel;
|
| +@synthesize detailTextLabel = _detailTextLabel;
|
| @synthesize imageView = _imageView;
|
|
|
| - (instancetype)initWithFrame:(CGRect)frame {
|
| @@ -72,9 +81,21 @@ const CGFloat kHorizontalSpacingBetweenImageAndLabel = 8;
|
| UIView* contentView = self.contentView;
|
| contentView.clipsToBounds = YES;
|
|
|
| + _stackView = [[UIStackView alloc] initWithArrangedSubviews:@[]];
|
| + _stackView.axis = UILayoutConstraintAxisVertical;
|
| + _stackView.layoutMarginsRelativeArrangement = YES;
|
| + _stackView.layoutMargins = UIEdgeInsetsMake(
|
| + kVerticalPadding, 0, kVerticalPadding, kHorizontalPadding);
|
| + _stackView.alignment = UIStackViewAlignmentLeading;
|
| + _stackView.spacing = kVerticalSpacingBetweenLabels;
|
| + _stackView.translatesAutoresizingMaskIntoConstraints = NO;
|
| + [contentView addSubview:_stackView];
|
| +
|
| _textLabel = [[UILabel alloc] init];
|
| - _textLabel.translatesAutoresizingMaskIntoConstraints = NO;
|
| - [contentView addSubview:_textLabel];
|
| + [_stackView addArrangedSubview:_textLabel];
|
| +
|
| + _detailTextLabel = [[UILabel alloc] init];
|
| + [_stackView addArrangedSubview:_detailTextLabel];
|
|
|
| _imageView = [[UIImageView alloc] initWithFrame:CGRectZero];
|
| _imageView.translatesAutoresizingMaskIntoConstraints = NO;
|
| @@ -83,30 +104,34 @@ const CGFloat kHorizontalSpacingBetweenImageAndLabel = 8;
|
|
|
| // Set default font and text colors for labels.
|
| - (void)setDefaultViewStyling {
|
| - _textLabel.font = [MDCTypography body1Font];
|
| + _textLabel.font = [MDCTypography body2Font];
|
| _textLabel.textColor = [[MDCPalette greyPalette] tint900];
|
| _textLabel.numberOfLines = 0;
|
| _textLabel.lineBreakMode = NSLineBreakByWordWrapping;
|
| +
|
| + _detailTextLabel.font = [MDCTypography body1Font];
|
| + _detailTextLabel.textColor = [[MDCPalette greyPalette] tint900];
|
| + _detailTextLabel.numberOfLines = 0;
|
| + _detailTextLabel.lineBreakMode = NSLineBreakByWordWrapping;
|
| }
|
|
|
| // Set constraints on subviews.
|
| - (void)setViewConstraints {
|
| UIView* contentView = self.contentView;
|
|
|
| - _textLeadingAnchorConstraint = [_textLabel.leadingAnchor
|
| - constraintEqualToAnchor:_imageView.trailingAnchor];
|
| + _labelsLeadingAnchorConstraint = [_stackView.leadingAnchor
|
| + constraintEqualToAnchor:_imageView.trailingAnchor
|
| + constant:kHorizontalSpacingBetweenImageAndLabels];
|
| _imageLeadingAnchorConstraint = [_imageView.leadingAnchor
|
| constraintEqualToAnchor:contentView.leadingAnchor
|
| constant:kHorizontalPadding];
|
|
|
| [NSLayoutConstraint activateConstraints:@[
|
| - [_textLabel.topAnchor constraintEqualToAnchor:self.contentView.topAnchor
|
| - constant:kVerticalPadding],
|
| - [_textLabel.bottomAnchor constraintEqualToAnchor:contentView.bottomAnchor
|
| - constant:-kVerticalPadding],
|
| + [_stackView.topAnchor constraintEqualToAnchor:self.contentView.topAnchor],
|
| + [_stackView.bottomAnchor constraintEqualToAnchor:contentView.bottomAnchor],
|
| [_imageView.centerYAnchor
|
| constraintEqualToAnchor:contentView.centerYAnchor],
|
| - _textLeadingAnchorConstraint,
|
| + _labelsLeadingAnchorConstraint,
|
| _imageLeadingAnchorConstraint,
|
| ]];
|
| }
|
| @@ -116,23 +141,26 @@ const CGFloat kHorizontalSpacingBetweenImageAndLabel = 8;
|
| // Implement -layoutSubviews as per instructions in documentation for
|
| // +[MDCCollectionViewCell cr_preferredHeightForWidth:forItem:].
|
| - (void)layoutSubviews {
|
| + _textLabel.hidden = !_textLabel.text;
|
| + _detailTextLabel.hidden = !_detailTextLabel.text;
|
| +
|
| [super layoutSubviews];
|
|
|
| - // Adjust the text label preferredMaxLayoutWidth when the parent's width
|
| + // Adjust the text labels' preferredMaxLayoutWidth when the parent's width
|
| // changes, for instance on screen rotation.
|
| CGFloat parentWidth = CGRectGetWidth(self.contentView.frame);
|
| + CGFloat preferredMaxLayoutWidth = parentWidth - (2 * kHorizontalPadding);
|
| if (_imageView.image) {
|
| - _textLabel.preferredMaxLayoutWidth =
|
| - parentWidth - (2 * kHorizontalPadding) -
|
| - kHorizontalSpacingBetweenImageAndLabel - _imageView.image.size.width;
|
| - _textLeadingAnchorConstraint.constant =
|
| - kHorizontalSpacingBetweenImageAndLabel;
|
| + preferredMaxLayoutWidth -=
|
| + kHorizontalSpacingBetweenImageAndLabels - _imageView.image.size.width;
|
| } else {
|
| - _textLabel.preferredMaxLayoutWidth = parentWidth - (2 * kHorizontalPadding);
|
| - _textLeadingAnchorConstraint.constant = 0;
|
| + _imageLeadingAnchorConstraint.constant = 0;
|
| + _labelsLeadingAnchorConstraint.constant = kHorizontalPadding;
|
| }
|
| + _textLabel.preferredMaxLayoutWidth = preferredMaxLayoutWidth;
|
| + _detailTextLabel.preferredMaxLayoutWidth = preferredMaxLayoutWidth;
|
|
|
| - // Re-layout with the new preferred width to allow the label to adjust its
|
| + // Re-layout with the new preferred width to allow the labels to adjust thier
|
| // height.
|
| [super layoutSubviews];
|
| }
|
| @@ -142,13 +170,15 @@ const CGFloat kHorizontalSpacingBetweenImageAndLabel = 8;
|
| - (void)prepareForReuse {
|
| [super prepareForReuse];
|
| self.textLabel.text = nil;
|
| + self.detailTextLabel.text = nil;
|
| self.imageView.image = nil;
|
| }
|
|
|
| #pragma mark - NSObject(Accessibility)
|
|
|
| - (NSString*)accessibilityLabel {
|
| - return [NSString stringWithFormat:@"%@", self.textLabel.text];
|
| + return [NSString stringWithFormat:@"%@, %@", self.textLabel.text,
|
| + self.detailTextLabel.text];
|
| }
|
|
|
| @end
|
|
|