| // Copyright 2015 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #import "ios/chrome/browser/ui/autofill/storage_switch_tooltip.h" |
| |
| #include "base/logging.h" |
| #include "components/strings/grit/components_strings.h" |
| #import "ios/third_party/material_roboto_font_loader_ios/src/src/MaterialRobotoFontLoader.h" |
| #include "ui/base/l10n/l10n_util.h" |
| |
| #if !defined(__has_feature) || !__has_feature(objc_arc) |
| #error "This file requires ARC support." |
| #endif |
| |
| namespace { |
| |
| const CGFloat kCornerRadius = 2.0f; |
| const CGFloat kFontSize = 12.0f; |
| const CGFloat kInset = 8.0f; |
| |
| } // namespace |
| |
| @implementation StorageSwitchTooltip |
| |
| - (instancetype)initWithFrame:(CGRect)frame { |
| self = [super initWithFrame:frame]; |
| if (self) { |
| NSString* tooltipText = |
| l10n_util::GetNSString(IDS_AUTOFILL_CARD_UNMASK_PROMPT_STORAGE_TOOLTIP); |
| [self setText:tooltipText]; |
| [self setTextColor:[UIColor whiteColor]]; |
| [self setBackgroundColor:[UIColor colorWithWhite:0.0 alpha:0.9]]; |
| [[self layer] setCornerRadius:kCornerRadius]; |
| [[self layer] setMasksToBounds:YES]; |
| [self setFont:[[MDFRobotoFontLoader sharedInstance] |
| regularFontOfSize:kFontSize]]; |
| [self setNumberOfLines:0]; // Allows multi-line layout. |
| } |
| return self; |
| } |
| |
| - (instancetype)init { |
| return [self initWithFrame:CGRectZero]; |
| } |
| |
| - (instancetype)initWithCoder:(NSCoder*)aDecoder { |
| NOTREACHED(); |
| return nil; |
| } |
| |
| // The logic in textRectForBounds:limitedToNumberOfLines: and drawTextInRect: |
| // adds an inset. Based on |
| // http://stackoverflow.com/questions/21167226/resizing-a-uilabel-to-accomodate-insets/21267507#21267507 |
| - (CGRect)textRectForBounds:(CGRect)bounds |
| limitedToNumberOfLines:(NSInteger)numberOfLines { |
| UIEdgeInsets insets = {kInset, kInset, kInset, kInset}; |
| CGRect rect = [super textRectForBounds:UIEdgeInsetsInsetRect(bounds, insets) |
| limitedToNumberOfLines:numberOfLines]; |
| |
| rect.origin.x -= insets.left; |
| rect.origin.y -= insets.top; |
| rect.size.width += (insets.left + insets.right); |
| rect.size.height += (insets.top + insets.bottom); |
| |
| return rect; |
| } |
| |
| - (void)drawTextInRect:(CGRect)rect { |
| UIEdgeInsets insets = {kInset, kInset, kInset, kInset}; |
| [super drawTextInRect:UIEdgeInsetsInsetRect(rect, insets)]; |
| } |
| |
| @end |