| Index: ios/chrome/today_extension/ui_util.mm
|
| diff --git a/ios/chrome/today_extension/ui_util.mm b/ios/chrome/today_extension/ui_util.mm
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..9367ca7f7aa289380ce02563e95f69aef0c629f6
|
| --- /dev/null
|
| +++ b/ios/chrome/today_extension/ui_util.mm
|
| @@ -0,0 +1,124 @@
|
| +// 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 <UIKit/UIKit.h>
|
| +
|
| +#include "base/ios/ios_util.h"
|
| +#include "ios/chrome/today_extension/ui_util.h"
|
| +
|
| +namespace {
|
| +const CGFloat kVeryLowOpacity = 0.25;
|
| +const CGFloat kLowOpacity = 0.3;
|
| +const CGFloat kMediumOpacity = 0.54;
|
| +const CGFloat kHighOpacity = 0.8;
|
| +const CGFloat kVeryHighOpacity = 0.87;
|
| +const CGFloat kFooterFontOpacity = 0.4;
|
| +const CGFloat kBackgroundOpacity = 0.75;
|
| +}
|
| +
|
| +namespace ui_util {
|
| +
|
| +const CGFloat kFirstLineHeight = 60;
|
| +const CGFloat kFirstLineButtonMargin = 8;
|
| +const CGFloat kSecondLineHeight = 56;
|
| +const CGFloat kSecondLineVerticalPadding = 10;
|
| +const CGFloat kUIButtonSeparator = 28;
|
| +const CGFloat kUIButtonFrontShift = 8;
|
| +const CGFloat kUIButtonCornerRadius = 4;
|
| +
|
| +const CGFloat kFooterVerticalMargin = 18;
|
| +const CGFloat kFooterHorizontalMargin = 16;
|
| +const CGFloat kTitleFontSize = 16;
|
| +
|
| +const CGFloat kEmptyLabelYOffset = -16;
|
| +
|
| +// These five constants have been empirically determined to align paste URL
|
| +// button with chrome header icon and text.
|
| +const CGFloat kiPadTextOffset = 10;
|
| +const CGFloat kiPhoneTextOffset = 6;
|
| +const CGFloat kiPadIconOffset = -31;
|
| +const CGFloat kiPhoneIconOffset = -26;
|
| +const CGFloat kDefaultLeadingMarginInset = 48;
|
| +
|
| +UIColor* InkColor() {
|
| + return [UIColor colorWithWhite:0.5 alpha:0.4];
|
| +}
|
| +
|
| +UIColor* BaseColorWithAlpha(CGFloat alpha) {
|
| + if (base::ios::IsRunningOnIOS10OrLater()) {
|
| + return [UIColor colorWithWhite:0.3 alpha:alpha];
|
| + } else {
|
| + return [UIColor colorWithWhite:1 alpha:alpha];
|
| + }
|
| +}
|
| +
|
| +UIColor* TitleColor() {
|
| + return BaseColorWithAlpha(kVeryHighOpacity);
|
| +}
|
| +
|
| +UIColor* BorderColor() {
|
| + return BaseColorWithAlpha(kLowOpacity);
|
| +}
|
| +
|
| +UIColor* TextColor() {
|
| + return BaseColorWithAlpha(kMediumOpacity);
|
| +}
|
| +
|
| +UIColor* BackgroundColor() {
|
| + return BaseColorWithAlpha(kBackgroundOpacity);
|
| +}
|
| +
|
| +UIColor* FooterTextColor() {
|
| + return BaseColorWithAlpha(kFooterFontOpacity);
|
| +}
|
| +
|
| +UIColor* NormalTintColor() {
|
| + if (base::ios::IsRunningOnIOS10OrLater()) {
|
| + return [UIColor colorWithWhite:0 alpha:kHighOpacity];
|
| + } else {
|
| + return BaseColorWithAlpha(kVeryLowOpacity);
|
| + }
|
| +}
|
| +
|
| +UIColor* ActiveTintColor() {
|
| + if (base::ios::IsRunningOnIOS10OrLater()) {
|
| + return [UIColor colorWithWhite:0 alpha:kHighOpacity];
|
| + } else {
|
| + return BaseColorWithAlpha(kVeryHighOpacity);
|
| + }
|
| +}
|
| +
|
| +UIColor* emptyLabelColor() {
|
| + return [[UIColor blackColor] colorWithAlphaComponent:kFooterFontOpacity];
|
| +}
|
| +
|
| +bool IsIPadIdiom() {
|
| + UIUserInterfaceIdiom idiom = [[UIDevice currentDevice] userInterfaceIdiom];
|
| + return idiom == UIUserInterfaceIdiomPad;
|
| +}
|
| +
|
| +bool IsRTL() {
|
| + NSString* locale = [NSLocale currentLocale].localeIdentifier;
|
| + return [NSLocale characterDirectionForLanguage:locale] ==
|
| + NSLocaleLanguageDirectionRightToLeft;
|
| +}
|
| +
|
| +CGFloat ChromeIconOffset() {
|
| + return ui_util::IsIPadIdiom() ? kiPadIconOffset : kiPhoneIconOffset;
|
| +}
|
| +
|
| +CGFloat ChromeTextOffset() {
|
| + return ui_util::IsIPadIdiom() ? kiPadTextOffset : kiPhoneTextOffset;
|
| +}
|
| +
|
| +void ConstrainAllSidesOfViewToView(UIView* container, UIView* filler) {
|
| + [NSLayoutConstraint activateConstraints:@[
|
| + [filler.leadingAnchor constraintEqualToAnchor:container.leadingAnchor],
|
| + [filler.trailingAnchor constraintEqualToAnchor:container.trailingAnchor],
|
| + [filler.topAnchor constraintEqualToAnchor:container.topAnchor],
|
| + [filler.bottomAnchor constraintEqualToAnchor:container.bottomAnchor],
|
| + ]];
|
| +}
|
| +
|
| +} // namespace ui_util
|
|
|