blob: ebcac2d39132af7758fe920cf4c4f34efde6301b [file] [log] [blame]
// Copyright 2016-present the Material Components for iOS authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#import "FeatureHighlightExampleSupplemental.h"
#import "MaterialButtons+ButtonThemer.h"
#import "MaterialButtons.h"
#import "MaterialButtons+Theming.h"
#import "MaterialCollections.h"
#import "MaterialPalettes.h"
#import "MaterialTypography.h"
#import "MaterialMath.h"
#import "MaterialColorScheme.h"
#import "MaterialTypographyScheme.h"
static NSString *const reuseIdentifier = @"Cell";
@implementation FeatureHighlightTypicalUseViewController (CatalogByConvention)
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
MDCButtonScheme *buttonScheme = [[MDCButtonScheme alloc] init];
buttonScheme.colorScheme = self.colorScheme;
buttonScheme.typographyScheme = self.typographyScheme;
self.infoLabel = [[UILabel alloc] initWithFrame:CGRectZero];
self.infoLabel.text = @"Tap anywhere to move the button.";
self.infoLabel.font = [MDCTypography subheadFont];
[self.view addSubview:self.infoLabel];
MDCButton *button = [[MDCButton alloc] init];
self.button = button;
[self.button setTitle:@"Feature" forState:UIControlStateNormal];
[self.button sizeToFit];
[self.view addSubview:self.button];
MDCButton *actionButton = [[MDCButton alloc] init];
self.actionButton = actionButton;
[self.actionButton setTitle:@"Show Feature Highlight" forState:UIControlStateNormal];
[self.actionButton sizeToFit];
[self.actionButton addTarget:self
action:@selector(didTapButton:)
forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:self.actionButton];
[MDCContainedButtonThemer applyScheme:buttonScheme toButton:button];
[MDCContainedButtonThemer applyScheme:buttonScheme toButton:actionButton];
UITapGestureRecognizer *tapRecognizer =
[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTapBackground:)];
[self.view addGestureRecognizer:tapRecognizer];
}
- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
[self.button sizeToFit];
CGRect frame = self.button.frame;
frame.origin.x = self.view.frame.size.width / 2 - frame.size.width / 2;
frame.origin.y = self.view.frame.size.height / 2 - frame.size.height / 2;
self.button.frame = frame;
[self.actionButton sizeToFit];
frame = self.actionButton.frame;
frame.origin.x = self.view.frame.size.width / 2 - frame.size.width / 2;
frame.origin.y = self.view.frame.size.height - 60;
self.actionButton.frame = frame;
CGSize labelSize = [self.infoLabel sizeThatFits:self.view.frame.size];
self.infoLabel.frame =
MDCRectAlignToScale(CGRectMake(self.view.frame.size.width / 2 - labelSize.width / 2, 20,
labelSize.width, labelSize.height),
[UIScreen mainScreen].scale);
}
- (void)didTapBackground:(UITapGestureRecognizer *)recognizer {
CGPoint location = [recognizer locationInView:recognizer.view];
location.x -= self.button.frame.size.width / 2;
location.y -= self.button.frame.size.height / 2;
self.button.frame = (CGRect){location, self.button.frame.size};
}
#pragma mark - CatalogByConvention
+ (NSDictionary *)catalogMetadata {
return @{
@"breadcrumbs" : @[ @"Feature Highlight", @"Feature Highlight" ],
@"description" : @"The Feature Highlight component is used to introduce users to new features "
@"and functionality at contextually relevant moments.",
@"primaryDemo" : @YES,
@"presentable" : @YES,
};
}
@end
@implementation FeatureHighlightColorExample (CatalogByConvention)
- (void)viewDidLoad {
[super viewDidLoad];
[self.collectionView registerClass:[MDCCollectionViewTextCell class]
forCellWithReuseIdentifier:reuseIdentifier];
self.colorNameToColorMap = @{
@"Red" : MDCPalette.redPalette.tint500,
@"Pink" : MDCPalette.pinkPalette.tint500,
@"Purple" : MDCPalette.purplePalette.tint500,
@"Deep Purple" : MDCPalette.deepPurplePalette.tint500,
@"Indigo" : MDCPalette.indigoPalette.tint500,
@"Blue" : MDCPalette.bluePalette.tint500,
@"Light Blue" : MDCPalette.lightBluePalette.tint500,
@"Cyan" : MDCPalette.cyanPalette.tint500,
@"Teal" : MDCPalette.tealPalette.tint500,
@"Green" : MDCPalette.greenPalette.tint500,
@"Light Green" : MDCPalette.lightGreenPalette.tint500,
@"Lime" : MDCPalette.limePalette.tint500,
@"Yellow" : MDCPalette.yellowPalette.tint500,
@"Amber" : MDCPalette.amberPalette.tint500,
@"Orange" : MDCPalette.orangePalette.tint500,
@"Deep Orange" : MDCPalette.deepOrangePalette.tint500,
@"Brown" : MDCPalette.brownPalette.tint500,
@"Grey" : MDCPalette.greyPalette.tint500,
@"Blue Grey" : MDCPalette.blueGreyPalette.tint500,
};
}
- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView {
return 1;
}
- (NSInteger)collectionView:(UICollectionView *)collectionView
numberOfItemsInSection:(NSInteger)section {
return self.colorNameToColorMap.count;
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView
cellForItemAtIndexPath:(NSIndexPath *)indexPath {
MDCCollectionViewTextCell *cell =
[collectionView dequeueReusableCellWithReuseIdentifier:reuseIdentifier
forIndexPath:indexPath];
UIView *accessory = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 20, 20)];
NSString *colorName = self.colorNameToColorMap.allKeys[indexPath.row];
accessory.backgroundColor = self.colorNameToColorMap[colorName];
cell.accessibilityLabel = colorName;
cell.isAccessibilityElement = YES;
cell.accessibilityTraits = cell.accessibilityTraits | UIAccessibilityTraitButton;
cell.accessoryView = accessory;
return cell;
}
#pragma mark - CatalogByConvention
+ (NSDictionary *)catalogMetadata {
return @{
@"breadcrumbs" : @[ @"Feature Highlight", @"Colors" ],
@"primaryDemo" : @NO,
@"presentable" : @NO,
};
}
@end
@implementation FeatureHighlightCustomFontsExample (CatalogByConvention)
- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
[self.button sizeToFit];
CGRect frame = self.button.frame;
frame.origin.x = self.view.frame.size.width / 2 - frame.size.width / 2;
frame.origin.y = self.view.frame.size.height / 2 - frame.size.height / 2;
self.button.frame = frame;
CGSize labelSize = [self.infoLabel sizeThatFits:self.view.frame.size];
self.infoLabel.frame = MDCRectAlignToScale(
CGRectMake(self.view.frame.size.width / 2 - labelSize.width / 2,
frame.origin.y - labelSize.height - 20, labelSize.width, labelSize.height),
[UIScreen mainScreen].scale);
}
#pragma mark - CatalogByConvention
+ (NSDictionary *)catalogMetadata {
return @{
@"breadcrumbs" : @[ @"Feature Highlight", @"Custom Fonts" ],
@"primaryDemo" : @NO,
@"presentable" : @NO,
};
}
@end
@implementation FeatureHighlightShownViewExample (CatalogByConvention)
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
MDCButtonScheme *buttonScheme = [[MDCButtonScheme alloc] init];
buttonScheme.colorScheme = self.colorScheme;
buttonScheme.typographyScheme = self.typographyScheme;
MDCFloatingButton *fab = [[MDCFloatingButton alloc] init];
[fab setImage:[UIImage imageNamed:@"system_icons/add"] forState:UIControlStateNormal];
[fab sizeToFit];
self.button = fab;
[self.view addSubview:self.button];
[fab applySecondaryThemeWithScheme:self.containerScheme];
MDCButton *actionButton = [[MDCButton alloc] init];
self.actionButton = actionButton;
[self.actionButton setTitle:@"Show Feature Highlight" forState:UIControlStateNormal];
[self.actionButton sizeToFit];
[self.actionButton addTarget:self
action:@selector(didTapButton:)
forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:self.actionButton];
[MDCContainedButtonThemer applyScheme:buttonScheme toButton:actionButton];
}
- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
[self.button sizeToFit];
CGRect frame = self.button.frame;
frame.origin.x = self.view.frame.size.width / 2 - frame.size.width / 2;
frame.origin.y = self.view.frame.size.height / 2 - frame.size.height / 2;
self.button.frame = frame;
[self.actionButton sizeToFit];
frame = self.actionButton.frame;
frame.origin.x = self.view.frame.size.width / 2 - frame.size.width / 2;
frame.origin.y = self.view.frame.size.height - 60;
self.actionButton.frame = frame;
}
#pragma mark - CatalogByConvention
+ (NSDictionary *)catalogMetadata {
return @{
@"breadcrumbs" : @[ @"Feature Highlight", @"Shown Views" ],
@"primaryDemo" : @NO,
@"presentable" : @YES,
};
}
@end