blob: 9367ca7f7aa289380ce02563e95f69aef0c629f6 [file] [log] [blame]
// 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