The Feature Highlight component is a way to visually highlight a part of the screen in order to introduce users to new features and functionality.
Add the following to your Podfile
:
pod 'MaterialComponents/FeatureHighlight'
Then, run the following command:
pod install
To import the component:
import MaterialComponents.MaterialFeatureHighlight
#import "MaterialFeatureHighlight.h"
let completion = {(accepted: Bool) in // perform analytics here // and record whether the highlight was accepted } let highlightController = MDCFeatureHighlightViewController(highlightedView: viewToHighlight, completion: completion) highlightController.titleText = "Just how you want it" highlightController.bodyText = "Tap the menu button to switch accounts, change settings & more." highlightController.outerHighlightColor = UIColor.blue.withAlphaComponent(kMDCFeatureHighlightOuterHighlightAlpha) present(highlightController, animated: true, completion:nil)
MDCFeatureHighlightCompletion completion = ^(BOOL accepted) { // perform analytics here // and record whether the highlight was accepted }; MDCFeatureHighlightViewController *highlightController = [[MDCFeatureHighlightViewController alloc] initWithHighlightedView:viewToHighlight completion:completion]; highlightController.titleText = @"Just how you want it"; highlightController.bodyText = @"Tap the menu button to switch accounts, change settings & more."; highlightController.outerHighlightColor = [[UIColor blueColor] colorWithAlphaComponent:kMDCFeatureHighlightOuterHighlightAlpha]; [self presentViewController:highlightController animated:YES completion:nil];
Often when highlighting a view you will want to display a different view to the one you are highlighting. For example, flipping the primary and secondary colors in the presented version.
let displayedButton = UIButton(type: .system) displayedButton.setTitle(highlightedButton.title(for: .normal), for: .normal) displayedButton.setTitleColor(highlightedButton.backgroundColor, for: .normal) displayedButton.backgroundColor = highlightedButton.titleColor(for: .normal) let highlightController = MDCFeatureHighlightViewController(highlightedView: highlightedButton, andShow: displayedButton, completion: completion)
UIButton *displayedButton = [UIButton buttonWithType:UIButtonTypeSystem]; [displayedButton setTitle:[highlightedButton titleForState:UIControlStateNormal] forState:UIControlStateNormal]; [displayedButton setTitleColor:highlightedButton.backgroundColor forState:UIControlStateNormal]; displayedButton.backgroundColor = [highlightedButton titleColorForState:UIControlStateNormal]; MDCFeatureHighlightViewController *highlightController = [[MDCFeatureHighlightViewController alloc] initWithHighlightedView:highlightedButton andShowView:displayedButton completion:completion];
You can theme feature highlight with your app's color scheme using the ColorThemer extension.
You must first add the Color Themer extension to your project:
pod 'MaterialComponents/FeatureHighlight+ColorThemer'
// Step 1: Import the ColorThemer extension import MaterialComponents.MaterialFeatureHighlight_ColorThemer // Step 2: Create or get a color scheme let colorScheme = MDCSemanticColorScheme() // Step 3: Apply the color scheme to your component MDCFeatureHighlightColorThemer.applySemanticColorScheme(colorScheme, to: component)
// Step 1: Import the ColorThemer extension #import "MaterialFeatureHighlight+ColorThemer.h" // Step 2: Create or get a color scheme id<MDCColorScheming> colorScheme = [[MDCSemanticColorScheme alloc] init]; // Step 3: Apply the color scheme to your component [MDCFeatureHighlightColorThemer applySemanticColorScheme:colorScheme toFeatureHighlightViewController:component];
You can theme feature highlight with your app's typography scheme using the TypographyThemer extension.
You must first add the Typography Themer extension to your project:
pod 'MaterialComponents/FeatureHighlight+TypographyThemer'
// Step 1: Import the TypographyThemer extension import MaterialComponents.MaterialFeatureHighlight_TypographyThemer // Step 2: Create or get a typography scheme let typographyScheme = MDCTypographyScheme() // Step 3: Apply the typography scheme to your component MDCFeatureHighlightTypographyThemer.applyTypographyScheme(typographyScheme, to: component)
// Step 1: Import the TypographyThemer extension #import "MaterialFeatureHighlight+TypographyThemer.h" // Step 2: Create or get a typography scheme id<MDCTypographyScheming> typographyScheme = [[MDCTypographyScheme alloc] init]; // Step 3: Apply the typography scheme to your component [MDCFeatureHighlightTypographyThemer applyTypographyScheme:colorScheme toFeatureHighlightViewController:component];