blob: 3d588ed285d302f07c17fc435c5fd6e8c24addc4 [file] [log] [blame] [view] [edit]
# Cards
<!-- badges -->
Cards contain content and actions about a single subject. They can be used standalone, or as part
of a list. Cards are meant to be interactive, and aren't meant to be be used solely for style
purposes.
<div class="article__asset article__asset--screenshot">
<img src="assets/cards.png" alt="Cards" width="320">
</div>
<!-- design-and-api -->
<!-- toc -->
- - -
## Overview
Cards provides two different versions, `MDCCard` inheriting from `UIControl` and `MDCCardCollectionCell` inheriting from `UICollectionViewCell`.
A card's state determines its visual styling.
When treated as a `UIControl` (`MDCCard`), it has a default styling (`UIControlStateNormal`), and a highlighted styling (`UIControlStateHighlighted`) when interacted with.
When treated as a `UICollectionViewCell` (`MDCCardCollectionCell`), it has a default styling (`MDCCardCellStateNormal`), a highlighted styling (`MDCCardCellStateHighlighted`), and lastly a selected styling (`MDCCardCellStateSelected`).
Customization to the card is exposed via its API either in `MDCCard` or `MDCCardCollectionCell`. Currently the card consists of these customizations:
- The border width for a specific state
- The border color for a specific state
- The shadow elevation for a specific state
- The shadow color for a specific state
- The corner radius for the card
(`MDCCardCollectionCell` customization only):
- Changing the image that appears in the Selected state.
- Changing the image tint color that appears in the Selected state.
An `MDCCard` can be added and used as you would add any `UIView` or `UIControl`, if manually in code, or through Interface Builder.
An `MDCCardCollectionCell` can be added, used, and reused as a `UICollectionViewCell`, if manually in code, or through Interface Builder.
MDCCardThemer exposes apis to theme MDCCard and MDCCardCollectionCell instances as either a default or outlined variant. An outlined variant behaves identically to a default styled card, but differs in its coloring and in that it has a stroked border. Use 'applyScheme:toCard:' to style an instance with default values and 'applyOutlinedVariantWithScheme:toCard:' to style an instance with the outlined values.
### Cards Classes
#### MDCCard
`MDCCard` subclasses `UIControl` and provides a simple class for developers to subclass and create custom cards with ink, shadows, corner radius, and stroke matching the Material spec.
`MDCCard` uses the `highlighted` property that is built-in in `UIControl` and the `UIControlState` to move between states.
#### MDCCardCollectionCell
`MDCCardCollectionCell` subclasses `UICollectionViewCell` and provides a simple collection view cell for developers to use in their collections with ink, shadows, corner radius, and stroke matching the Material spec.
`MDCCardCollectionCell` uses the `selected` property that is built-in in `UICollectionViewCell` and has its own `MDCCardCellState` to keep track of the current state it is in.
## Installation
- [Typical installation](../../../docs/component-installation.md)
## Usage
- [Typical use: as a view](typical-use-view.md)
- [Typical use: in a collection view](typical-use-collections.md)
## Extensions
- [Theming](theming.md)
## Accessibility
- [Accessibility Labels](accessibility.md)
## Unsupported
- [Color Theming](color-theming.md)
- [Shape Theming](shape-theming.md)