All Versions
375
Latest Version
Avg Release Cycle
6 days
Latest Release
-

Changelog History
Page 15

  • v84.2.0 Changes

    πŸš€ This minor release adds support for a custom unbounded Ripple radius value. It also includes several πŸ› bug fixes and documentation updates to multiple components.

    πŸ†• New features

    πŸ’… MDCRippleView now supports a custom ripple radius for the .unbounded ripple style. This allows clients to customize how far outside (or within) a view the ripple effect will extend.

    MDCRippleView *rippleView = [[MDCRippleView alloc] init];
    rippleView.rippleStyle = MDCRippleStyleUnbounded;
    rippleView.maximumRadius = 10;
    

    API changes

    Ripple

    MDCRippleView

    πŸ†• new property: maximumRadius in MDCRippleView

    ShadowElevations

    MDCShadowElevationNavDrawer

    modified constant: MDCShadowElevationNavDrawer

    Type of change: Declaration
    From: static const MDCShadowElevation MDCShadowElevationNavDrawer = (CGFloat)16.
    To: static const MDCShadowElevation MDCShadowElevationNavDrawer = (CGFloat)4.

    Component changes

    πŸ”„ Changes

    ActionSheet

    BottomNavigation

    Ink

    NavigationDrawer

    Ripple

    TextFields

    Snapshot (private)

    Multi-component changes


  • v84.1.1 Changes

    πŸš€ This patch release fixes ActionSheet to lay out its content correctly when there is a safe area present, for iOS 11 and newer.

    πŸ”„ Changes

    ActionSheet


  • v84.1.0 Changes

    πŸš€ This minor release adds enhancements to PageControl and Ink, bug fixes for FlexibleHeader, Ink, NavigationBar, and Ripple, and additional test coverage for ActionSheet and NavigationBar.

    πŸ†• New features

    Ink

    MDCInkTouchController now gives users the ability to require that UIScrollView gesture recognizers fail before the ink animation is triggered. (#7315)

    inkTouchController.requiresFailureOfScrollViewGestures = YES;
    

    API changes

    Ink

    πŸ†• new property: requiresFailureOfScrollViewGestures in MDCInkTouchController

    πŸ”„ Changes

    ActionSheet

    BottomNavigation

    FlexibleHeader

    Ink

    NavigationBar

    PageControl

    Ripple


  • v84.0.0 Changes

    πŸš€ This release corrected a TextFields accessibility behavior, added Ripple to Chips, and added βž• additional delegate calls to BottomSheet.

    πŸ”Š Theming docs for multiple components were added, including Chips, Dialogs, and Cards.

    πŸ’₯ Breaking changes

    TextField

    The VoiceOver behavior of MDCTextField was modified. Much of the information previously returned by -accessibilityValue is now being returned by -accessibilityLabel. There is now a , that results in a pause between the label and the helper text.

    Searches for MDCTextFields in your view hiearchy with accessiblity value must be changed to searches for the MDCTextField's accessibility label. The label now also has a inserted , too.

    For example an EarlGrey matcher needs to be adjusted from

    EarlGrey
          .selectElement(with: grey_accessibilityValue("Phone Number XXX-XXXX")
    

    To:

    EarlGrey
          .selectElement(with: grey_accessibilityLabel("Phone Number, XXX-XXXX")
    

    More information can be found in the PR

    πŸ†• New features

    Dialog theming

    🚚 Moved from beta to ready

    Bottom Sheet

    All methods in the MDCBottomSheetControllerDelegate protocol were marked optional.

    Two new methods were added to convey state changes and scroll events.

    - (void)bottomSheetControllerDidChangeYOffset:(MDCBottomSheetController *)controller
                                          yOffset:(CGFloat)yOffset {
      NSLog(@"bottom sheet Y offset changed: %f", yOffset);
    }
    
    - (void)bottomSheetControllerStateChanged:(MDCBottomSheetController *)controller
                                        state:(MDCSheetState)state {
      NSLog(@"bottom sheet state changed to: %lu", (unsigned long)state);
    }
    

    Chips

    πŸ‘ Ripple support was added.

      chipView.enableRippleBehavior = YES;
    

    API changes

    BottomSheet

    MDCBottomSheetControllerDelegate

    πŸ†• new method: -bottomSheetControllerStateChanged:state: in MDCBottomSheetControllerDelegate

    πŸ†• new method: -bottomSheetControllerDidChangeYOffset:yOffset: in MDCBottomSheetControllerDelegate

    modified method: -bottomSheetControllerDidDismissBottomSheet: in MDCBottomSheetControllerDelegate

    Type of change: Swift declaration
    From: func bottomSheetControllerDidDismissBottomSheet(_ controller: MDCBottomSheetController)
    To: optional func bottomSheetControllerDidDismissBottomSheet(_ controller: MDCBottomSheetController)

    MDCBottomSheetPresentationControllerDelegate

    πŸ†• new method: -bottomSheetDidChangeYOffset:yOffset: in MDCBottomSheetPresentationControllerDelegate

    modified method: -bottomSheetWillChangeState:sheetState: in MDCBottomSheetPresentationControllerDelegate

    Type of change: Declaration
    From: - (void)bottomSheetWillChangeState:(nonnull MDCBottomSheetPresentationController *)bottomSheet sheetState:(MDCSheetState)sheetState;
    To: - (void)bottomSheetWillChangeState: (nonnull MDCBottomSheetPresentationController *)bottomSheet sheetState:(MDCSheetState)sheetState;

    Chips

    MDCChipView

    πŸ†• new property: enableRippleBehavior in MDCChipView

    modified class: MDCChipView

    Type of change: Declaration
    From: @interface MDCChipView : UIControl /* A UIImageView that leads the title label. */ @property(nonatomic, readonly, nonnull) IBInspectable UIImageView *imageView; /* A UIImageView that leads the title label. Appears in front of the imageView. Only visible when the chip is selected. This image view is typically used to show some icon that denotes the chip as selected, such as a check mark. If imageView has no image then the chip will require resizing when selected or deselected to account for the changing visibility of selectedImageView. */ @property(nonatomic, readonly, nonnull) IBInspectable UIImageView *selectedImageView; /* A UIView that trails the title label. It will be given a size based on the value returned from sizeThatFits:. */ @property(nonatomic, strong, nullable) IBInspectable UIView *accessoryView; /* The title label. @note The title color is controlled by setTitleColor:forState:. @note The title font is controlled by setTitleFont. */ @property(nonatomic, readonly, nonnull) IBInspectable UILabel *titleLabel; /* Padding around the chip content. Each subview can be further padded with their invidual padding property. The chip uses this property to determine intrinsicContentSize and sizeThatFits. Defaults to (4, 4, 4, 4). */ @property(nonatomic, assign) UIEdgeInsets contentPadding UI_APPEARANCE_SELECTOR; /* Padding around the image view. Only used if the image view has a non-nil image. The chip uses this property to determine intrinsicContentSize and sizeThatFits. Defaults to (0, 0, 0, 0). */ @property(nonatomic, assign) UIEdgeInsets imagePadding UI_APPEARANCE_SELECTOR; /* Padding around the accessory view. Only used if the accessory view is non-nil. The chip uses this property to determine intrinsicContentSize and sizeThatFits. Defaults to (0, 0, 0, 0). */ @property(nonatomic, assign) UIEdgeInsets accessoryPadding UI_APPEARANCE_SELECTOR; /* Padding around the title. The chip uses this property to determine intrinsicContentSize and sizeThatFits. Defaults to (3, 8, 4, 8). The top padding is shorter so the default height of a chip is 32 pts. */ @property(nonatomic, assign) UIEdgeInsets titlePadding UI_APPEARANCE_SELECTOR; /* Font used to render the title. If nil, the chip will use the system font. */ @property(nonatomic, strong, nullable) UIFont *titleFont UI_APPEARANCE_SELECTOR; /* The color of the ink ripple. */ @property(nonatomic, strong, null_resettable) UIColor *inkColor UI_APPEARANCE_SELECTOR __deprecated_msg("Use setInkColor:forState:"); /* The shape generator used to define the chip's shape. */ @property(nullable, nonatomic, strong) id<MDCShapeGenerating> shapeGenerator UI_APPEARANCE_SELECTOR; /* Indicates whether the chip should automatically update its font when the device’s UIContentSizeCategory is changed. This property is modeled after the adjustsFontForContentSizeCategory property in the UIContentSizeCategoryAdjusting protocol added by Apple in iOS 10.0. If set to YES, this button will base its text font on MDCFontTextStyleButton. Default value is NO. */ @property(nonatomic, readwrite, setter=mdc_setAdjustsFontForContentSizeCategory:) BOOL mdc_adjustsFontForContentSizeCategory UI_APPEARANCE_SELECTOR; /** The minimum dimensions of the Chip. A non-positive value for either height or width is equivalent to no minimum for that dimension. Defaults to a minimum height of 32 points, and no minimum width. */ @property(nonatomic, assign) CGSize minimumSize UI_APPEARANCE_SELECTOR; /** Custom insets to use when computing touch targets. A positive inset value will shrink the hit area for the Chip. */ @property(nonatomic, assign) UIEdgeInsets hitAreaInsets; /* A color used as the chip's @c backgroundColor for @c state. If no background color has been set for a given state, the returned value will fall back to the value set for UIControlStateNormal. @param state The control state. @return The background color. */ - (nullable UIColor *)backgroundColorForState:(UIControlState)state; /* A color used as the chip's @c backgroundColor. Defaults to blue. @param backgroundColor The background color. @param state The control state. */ - (void)setBackgroundColor:(nullable UIColor *)backgroundColor forState:(UIControlState)state UI_APPEARANCE_SELECTOR; /* Returns the border color for a particular control state. If no border width has been set for a given state, the returned value will fall back to the value set for UIControlStateNormal. @param state The control state. @return The border color for the requested state. */ - (nullable UIColor *)borderColorForState:(UIControlState)state; /* Sets the border color for a particular control state. @param borderColor The border color. @param state The control state. */ - (void)setBorderColor:(nullable UIColor *)borderColor forState:(UIControlState)state UI_APPEARANCE_SELECTOR; /* Returns the border width for a particular control state. If no border width has been set for a given state, the returned value will fall back to the value set for UIControlStateNormal. @param state The control state. @return The border width for the requested state. */ - (CGFloat)borderWidthForState:(UIControlState)state; /* Sets the border width for a particular control state. @param borderWidth The border width. @param state The control state. */ - (void)setBorderWidth:(CGFloat)borderWidth forState:(UIControlState)state UI_APPEARANCE_SELECTOR; /* Returns the elevation for a particular control state. If no elevation has been set for a given state, the returned value will fall back to the value set for UIControlStateNormal. @param state The control state. @return The elevation for the requested state. */ - (MDCShadowElevation)elevationForState:(UIControlState)state; /* Sets the elevation for a particular control state. @param elevation The elevation. @param state The control state. */ - (void)setElevation:(MDCShadowElevation)elevation forState:(UIControlState)state UI_APPEARANCE_SELECTOR; /* Returns the ink color for a particular control state. If no ink color has been set for a given state, the returned value will fall back to the value set for UIControlStateNormal. Defaults to nil. When nil MDCInkView.defaultInkColor is used. @param state The control state. @return The ink color for the requested state. */ - (nullable UIColor *)inkColorForState:(UIControlState)state; /* Sets the ink color for a particular control state. @param inkColor The ink color. @param state The control state. */ - (void)setInkColor:(nullable UIColor *)inkColor forState:(UIControlState)state UI_APPEARANCE_SELECTOR; /* Returns the shadow color for a particular control state. If no shadow color has been set for a given state, the returned value will fall back to the value set for UIControlStateNormal. @param state The control state. @return The shadow color for the requested state. */ - (nullable UIColor *)shadowColorForState:(UIControlState)state; /* Sets the shadow color for a particular control state. @param elevation The shadow color. @param state The control state. */ - (void)setShadowColor:(nullable UIColor *)shadowColor forState:(UIControlState)state UI_APPEARANCE_SELECTOR; /* Returns the title color for a particular control state. If no title color has been set for a given state, the returned value will fall back to the value set for UIControlStateNormal. @param state The control state. @return The title color for the requested state. */ - (nullable UIColor *)titleColorForState:(UIControlState)state; /* Sets the title color for a particular control state. @param titleColor The title color. @param state The control state. */ - (void)setTitleColor:(nullable UIColor *)titleColor forState:(UIControlState)state UI_APPEARANCE_SELECTOR; @end
    To: @interface MDCChipView : UIControl /* A UIImageView that leads the title label. */ @property(nonatomic, readonly, nonnull) IBInspectable UIImageView *imageView; /* A UIImageView that leads the title label. Appears in front of the imageView. Only visible when the chip is selected. This image view is typically used to show some icon that denotes the chip as selected, such as a check mark. If imageView has no image then the chip will require resizing when selected or deselected to account for the changing visibility of selectedImageView. */ @property(nonatomic, readonly, nonnull) IBInspectable UIImageView *selectedImageView; /* A UIView that trails the title label. It will be given a size based on the value returned from sizeThatFits:. */ @property(nonatomic, strong, nullable) IBInspectable UIView *accessoryView; /* The title label. @note The title color is controlled by setTitleColor:forState:. @note The title font is controlled by setTitleFont. */ @property(nonatomic, readonly, nonnull) IBInspectable UILabel *titleLabel; /* Padding around the chip content. Each subview can be further padded with their invidual padding property. The chip uses this property to determine intrinsicContentSize and sizeThatFits. Defaults to (4, 4, 4, 4). */ @property(nonatomic, assign) UIEdgeInsets contentPadding UI_APPEARANCE_SELECTOR; /* Padding around the image view. Only used if the image view has a non-nil image. The chip uses this property to determine intrinsicContentSize and sizeThatFits. Defaults to (0, 0, 0, 0). */ @property(nonatomic, assign) UIEdgeInsets imagePadding UI_APPEARANCE_SELECTOR; /* Padding around the accessory view. Only used if the accessory view is non-nil. The chip uses this property to determine intrinsicContentSize and sizeThatFits. Defaults to (0, 0, 0, 0). */ @property(nonatomic, assign) UIEdgeInsets accessoryPadding UI_APPEARANCE_SELECTOR; /* Padding around the title. The chip uses this property to determine intrinsicContentSize and sizeThatFits. Defaults to (3, 8, 4, 8). The top padding is shorter so the default height of a chip is 32 pts. */ @property(nonatomic, assign) UIEdgeInsets titlePadding UI_APPEARANCE_SELECTOR; /* Font used to render the title. If nil, the chip will use the system font. */ @property(nonatomic, strong, nullable) UIFont *titleFont UI_APPEARANCE_SELECTOR; /* This property determines if an @c MDCChipView should use the @c MDCRippleView behavior or not. By setting this property to @c YES, @c MDCStatefulRippleView is used to provide the user visual touch feedback, instead of the legacy @c MDCInkView. @note Defaults to @c NO. */ @property(nonatomic, assign) BOOL enableRippleBehavior; /* The color of the ink ripple. */ @property(nonatomic, strong, null_resettable) UIColor *inkColor UI_APPEARANCE_SELECTOR __deprecated_msg("Use setInkColor:forState:"); /* The shape generator used to define the chip's shape. */ @property(nullable, nonatomic, strong) id<MDCShapeGenerating> shapeGenerator UI_APPEARANCE_SELECTOR; /* Indicates whether the chip should automatically update its font when the device’s UIContentSizeCategory is changed. This property is modeled after the adjustsFontForContentSizeCategory property in the UIContentSizeCategoryAdjusting protocol added by Apple in iOS 10.0. If set to YES, this button will base its text font on MDCFontTextStyleButton. Default value is NO. */ @property(nonatomic, readwrite, setter=mdc_setAdjustsFontForContentSizeCategory:) BOOL mdc_adjustsFontForContentSizeCategory UI_APPEARANCE_SELECTOR; /** The minimum dimensions of the Chip. A non-positive value for either height or width is equivalent to no minimum for that dimension. Defaults to a minimum height of 32 points, and no minimum width. */ @property(nonatomic, assign) CGSize minimumSize UI_APPEARANCE_SELECTOR; /** Custom insets to use when computing touch targets. A positive inset value will shrink the hit area for the Chip. */ @property(nonatomic, assign) UIEdgeInsets hitAreaInsets; /* A color used as the chip's @c backgroundColor for @c state. If no background color has been set for a given state, the returned value will fall back to the value set for UIControlStateNormal. @param state The control state. @return The background color. */ - (nullable UIColor *)backgroundColorForState:(UIControlState)state; /* A color used as the chip's @c backgroundColor. Defaults to blue. @param backgroundColor The background color. @param state The control state. */ - (void)setBackgroundColor:(nullable UIColor *)backgroundColor forState:(UIControlState)state UI_APPEARANCE_SELECTOR; /* Returns the border color for a particular control state. If no border width has been set for a given state, the returned value will fall back to the value set for UIControlStateNormal. @param state The control state. @return The border color for the requested state. */ - (nullable UIColor *)borderColorForState:(UIControlState)state; /* Sets the border color for a particular control state. @param borderColor The border color. @param state The control state. */ - (void)setBorderColor:(nullable UIColor *)borderColor forState:(UIControlState)state UI_APPEARANCE_SELECTOR; /* Returns the border width for a particular control state. If no border width has been set for a given state, the returned value will fall back to the value set for UIControlStateNormal. @param state The control state. @return The border width for the requested state. */ - (CGFloat)borderWidthForState:(UIControlState)state; /* Sets the border width for a particular control state. @param borderWidth The border width. @param state The control state. */ - (void)setBorderWidth:(CGFloat)borderWidth forState:(UIControlState)state UI_APPEARANCE_SELECTOR; /* Returns the elevation for a particular control state. If no elevation has been set for a given state, the returned value will fall back to the value set for UIControlStateNormal. @param state The control state. @return The elevation for the requested state. */ - (MDCShadowElevation)elevationForState:(UIControlState)state; /* Sets the elevation for a particular control state. @param elevation The elevation. @param state The control state. */ - (void)setElevation:(MDCShadowElevation)elevation forState:(UIControlState)state UI_APPEARANCE_SELECTOR; /* Returns the ink color for a particular control state. If no ink color has been set for a given state, the returned value will fall back to the value set for UIControlStateNormal. Defaults to nil. When nil MDCInkView.defaultInkColor is used. @param state The control state. @return The ink color for the requested state. */ - (nullable UIColor *)inkColorForState:(UIControlState)state; /* Sets the ink color for a particular control state. @param inkColor The ink color. @param state The control state. */ - (void)setInkColor:(nullable UIColor *)inkColor forState:(UIControlState)state UI_APPEARANCE_SELECTOR; /* Returns the shadow color for a particular control state. If no shadow color has been set for a given state, the returned value will fall back to the value set for UIControlStateNormal. @param state The control state. @return The shadow color for the requested state. */ - (nullable UIColor *)shadowColorForState:(UIControlState)state; /* Sets the shadow color for a particular control state. @param elevation The shadow color. @param state The control state. */ - (void)setShadowColor:(nullable UIColor *)shadowColor forState:(UIControlState)state UI_APPEARANCE_SELECTOR; /* Returns the title color for a particular control state. If no title color has been set for a given state, the returned value will fall back to the value set for UIControlStateNormal. @param state The control state. @return The title color for the requested state. */ - (nullable UIColor *)titleColorForState:(UIControlState)state; /* Sets the title color for a particular control state. @param titleColor The title color. @param state The control state. */ - (void)setTitleColor:(nullable UIColor *)titleColor forState:(UIControlState)state UI_APPEARANCE_SELECTOR; @end

    Component changes

    πŸ”„ Changes

    ActionSheet

    Banner

    BottomSheet

    Cards

    Chips

    πŸ”Š Dialogs

    Ripple

    TextFields

    Multi-component changes


  • v83.0.2 Changes

    πŸš€ This patch release fixes a crashing bug with ActionSheet during rotation.

    Component changes

    ActionSheet


  • v83.0.1 Changes

    πŸ“š This patch release resolves some missing content from the theming extension documentation and βœ‚ removes a broken link.


  • v83.0.0 Changes

    πŸš€ This major release graduates most Theming Extensions from Beta and includes a breaking change for πŸ—„ AppBar's imports. All Themer APIs have been annotated as "to be deprecated" in lieu of Theming extensions. The following Theming Extensions are now generally available:

    • ActionSheet
    • AppBar
    • Buttons
    • Cards
    • Chips
    • Tabs
    • TextFields
    • Container scheme

    πŸ’₯ Breaking changes

    ⚑️ AppBar's Theming extension header has changed, so you may need to update your import statements accordingly:

    Swift

    - import MaterialComponents.MaterialAppBar_MaterialTheming
    + import MaterialComponents.MaterialAppBar_Theming
    

    ObjC

    - #import "MaterialAppBar+MaterialTheming.h"
    + #import "MaterialAppBar+Theming.h"
    

    API changes

    ActivityIndicator+ColorThemer

    πŸ—„ MDCActivityIndicatorColorThemer(ToBeDeprecated)

    modified class method: +applySemanticColorScheme:toActivityIndicator: in MDCActivityIndicatorColorThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCActivityIndicatorColorThemer
    πŸ—„ To:

    AppBar+ColorThemer

    πŸ—„ MDCAppBarColorThemer(ToBeDeprecated)

    modified class method: +applySurfaceVariantWithColorScheme:toAppBarViewController: in MDCAppBarColorThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCAppBarColorThemer
    πŸ—„ To:

    modified class method: +applyColorScheme:toAppBarViewController: in MDCAppBarColorThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCAppBarColorThemer
    πŸ—„ To:

    AppBar+TypographyThemer

    πŸ—„ MDCAppBarTypographyThemer(ToBeDeprecated)

    modified class method: +applyTypographyScheme:toAppBarViewController: in MDCAppBarTypographyThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCAppBarTypographyThemer
    πŸ—„ To:

    BottomAppBar+ColorThemer

    πŸ—„ MDCBottomAppBarColorThemer(ToBeDeprecated)

    modified class method: +applySurfaceVariantWithSemanticColorScheme:toBottomAppBarView: in MDCBottomAppBarColorThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCBottomAppBarColorThemer
    πŸ—„ To:

    BottomNavigation+ColorThemer

    πŸ—„ MDCBottomNavigationBarColorThemer(ToBeDeprecated)

    modified class method: +applySemanticColorScheme:toBottomNavigation: in MDCBottomNavigationBarColorThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCBottomNavigationBarColorThemer
    πŸ—„ To:

    BottomNavigation+TypographyThemer

    πŸ—„ MDCBottomNavigationBarTypographyThemer(ToBeDeprecated)

    πŸ†• new category: MDCBottomNavigationBarTypographyThemer(ToBeDeprecated)

    modified class method: +applyTypographyScheme:toBottomNavigationBar: in MDCBottomNavigationBarTypographyThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCBottomNavigationBarTypographyThemer
    πŸ—„ To:

    BottomSheet+ShapeThemer

    πŸ—„ MDCBottomSheetControllerShapeThemer(ToBeDeprecated)

    πŸ†• new category: MDCBottomSheetControllerShapeThemer(ToBeDeprecated)

    modified class method: +applyShapeScheme:toBottomSheetController: in MDCBottomSheetControllerShapeThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCBottomSheetControllerShapeThemer
    πŸ—„ To:

    ButtonBar+ColorThemer

    πŸ—„ MDCButtonBarColorThemer(ToBeDeprecated)

    modified class method: +applySemanticColorScheme:toButtonBar: in MDCButtonBarColorThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCButtonBarColorThemer
    πŸ—„ To:

    ButtonBar+TypographyThemer

    πŸ—„ MDCButtonBarTypographyThemer(ToBeDeprecated)

    πŸ†• new category: MDCButtonBarTypographyThemer(ToBeDeprecated)

    modified class method: +applyTypographyScheme:toButtonBar: in MDCButtonBarTypographyThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCButtonBarTypographyThemer
    πŸ—„ To:

    Buttons+ButtonThemer

    πŸ—„ MDCOutlinedButtonThemer(ToBeDeprecated)

    πŸ†• new category: MDCOutlinedButtonThemer(ToBeDeprecated)

    modified class method: +applyScheme:toButton: in MDCOutlinedButtonThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCOutlinedButtonThemer
    πŸ—„ To:

    πŸ—„ MDCContainedButtonThemer(ToBeDeprecated)

    πŸ†• new category: MDCContainedButtonThemer(ToBeDeprecated)

    modified class method: +applyScheme:toButton: in MDCContainedButtonThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCContainedButtonThemer
    πŸ—„ To:

    πŸ—„ MDCTextButtonThemer(ToBeDeprecated)

    πŸ†• new category: MDCTextButtonThemer(ToBeDeprecated)

    modified class method: +applyScheme:toButton: in MDCTextButtonThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCTextButtonThemer
    πŸ—„ To:

    πŸ—„ MDCFloatingActionButtonThemer(ToBeDeprecated)

    πŸ†• new category: MDCFloatingActionButtonThemer(ToBeDeprecated)

    modified class method: +applyScheme:toButton: in MDCFloatingActionButtonThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCFloatingActionButtonThemer
    πŸ—„ To:

    Buttons+ColorThemer

    πŸ—„ MDCOutlinedButtonColorThemer(ToBeDeprecated)

    πŸ†• new category: MDCOutlinedButtonColorThemer(ToBeDeprecated)

    modified class method: +applySemanticColorScheme:toButton: in MDCOutlinedButtonColorThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCOutlinedButtonColorThemer
    πŸ—„ To:

    πŸ—„ MDCContainedButtonColorThemer(ToBeDeprecated)

    πŸ†• new category: MDCContainedButtonColorThemer(ToBeDeprecated)

    modified class method: +applySemanticColorScheme:toButton: in MDCContainedButtonColorThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCContainedButtonColorThemer
    πŸ—„ To:

    πŸ—„ MDCTextButtonColorThemer(ToBeDeprecated)

    πŸ†• new category: MDCTextButtonColorThemer(ToBeDeprecated)

    modified class method: +applySemanticColorScheme:toButton: in MDCTextButtonColorThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCTextButtonColorThemer
    πŸ—„ To:

    πŸ—„ MDCFloatingButtonColorThemer(ToBeDeprecated)

    πŸ†• new category: MDCFloatingButtonColorThemer(ToBeDeprecated)

    modified class method: +applySemanticColorScheme:toButton: in MDCFloatingButtonColorThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCFloatingButtonColorThemer
    πŸ—„ To:

    Buttons+ShapeThemer

    πŸ—„ MDCFloatingButtonShapeThemer(ToBeDeprecated)

    πŸ†• new category: MDCFloatingButtonShapeThemer(ToBeDeprecated)

    modified class method: +applyShapeScheme:toButton: in MDCFloatingButtonShapeThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCFloatingButtonShapeThemer
    πŸ—„ To:

    πŸ—„ MDCButtonShapeThemer(ToBeDeprecated)

    πŸ†• new category: MDCButtonShapeThemer(ToBeDeprecated)

    modified class method: +applyShapeScheme:toButton: in MDCButtonShapeThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCButtonShapeThemer
    πŸ—„ To:

    Buttons+TypographyThemer

    πŸ—„ MDCButtonTypographyThemer(ToBeDeprecated)

    πŸ†• new category: MDCButtonTypographyThemer(ToBeDeprecated)

    modified class method: +applyTypographyScheme:toButton: in MDCButtonTypographyThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCButtonTypographyThemer
    πŸ—„ To:

    Cards+CardThemer

    πŸ—„ MDCCardThemer(ToBeDeprecated)

    πŸ†• new category: MDCCardThemer(ToBeDeprecated)

    modified class method: +applyOutlinedVariantWithScheme:toCardCell: in MDCCardThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCCardThemer
    πŸ—„ To:

    modified class method: +applyScheme:toCard: in MDCCardThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCCardThemer
    πŸ—„ To:

    modified class method: +applyOutlinedVariantWithScheme:toCard: in MDCCardThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCCardThemer
    πŸ—„ To:

    modified class method: +applyScheme:toCardCell: in MDCCardThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCCardThemer
    πŸ—„ To:

    Cards+ColorThemer

    πŸ—„ MDCCardsColorThemer(ToBeDeprecated)

    πŸ†• new category: MDCCardsColorThemer(ToBeDeprecated)

    modified class method: +applySemanticColorScheme:toCard: in MDCCardsColorThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCCardsColorThemer
    πŸ—„ To:

    modified class method: +applyOutlinedVariantWithColorScheme:toCardCell: in MDCCardsColorThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCCardsColorThemer
    πŸ—„ To:

    modified class method: +applyOutlinedVariantWithColorScheme:toCard: in MDCCardsColorThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCCardsColorThemer
    πŸ—„ To:

    modified class method: +applySemanticColorScheme:toCardCell: in MDCCardsColorThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCCardsColorThemer
    πŸ—„ To:

    Cards+ShapeThemer

    πŸ—„ MDCCardsShapeThemer(ToBeDeprecated)

    πŸ†• new category: MDCCardsShapeThemer(ToBeDeprecated)

    modified class method: +applyShapeScheme:toCardCell: in MDCCardsShapeThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCCardsShapeThemer
    πŸ—„ To:

    modified class method: +applyShapeScheme:toCard: in MDCCardsShapeThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCCardsShapeThemer
    πŸ—„ To:

    Chips+ChipThemer

    πŸ—„ MDCChipViewThemer(ToBeDeprecated)

    πŸ†• new category: MDCChipViewThemer(ToBeDeprecated)

    modified class method: +applyScheme:toChipView: in MDCChipViewThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCChipViewThemer
    πŸ—„ To:

    modified class method: +applyOutlinedVariantWithScheme:toChipView: in MDCChipViewThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCChipViewThemer
    πŸ—„ To:

    Chips+ColorThemer

    πŸ—„ MDCChipViewColorThemer(ToBeDeprecated)

    modified class method: +applySemanticColorScheme:toChipView: in MDCChipViewColorThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCChipViewColorThemer
    πŸ—„ To:

    modified class method: +applyOutlinedVariantWithColorScheme:toChipView: in MDCChipViewColorThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCChipViewColorThemer
    πŸ—„ To:

    Chips+FontThemer

    πŸ—„ MDCChipViewFontThemer(ToBeDeprecated)

    πŸ†• new category: MDCChipViewFontThemer(ToBeDeprecated)

    modified class method: +applyFontScheme:toChipView: in MDCChipViewFontThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCChipViewFontThemer
    πŸ—„ To:

    Chips+ShapeThemer

    πŸ—„ MDCChipViewShapeThemer(ToBeDeprecated)

    πŸ†• new category: MDCChipViewShapeThemer(ToBeDeprecated)

    modified class method: +applyShapeScheme:toChipView: in MDCChipViewShapeThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCChipViewShapeThemer
    πŸ—„ To:

    πŸ”Š Dialogs+ColorThemer

    MDCAlertColorThemer

    modified class method: +applyColorScheme: in MDCAlertColorThemer

    Type of change: parent.usr
    πŸ—„ From:
    To: c:objc(cs)MDCAlertColorThemer

    πŸ—„ MDCAlertColorThemer(ToBeDeprecated)

    βœ‚ removed category: MDCAlertColorThemer(ToBeDeprecated)

    πŸ”‹ FeatureHighlight+ColorThemer

    πŸ—„ MDCFeatureHighlightColorThemer(ToBeDeprecated)

    modified class method: +applySemanticColorScheme:toFeatureHighlightViewController: in MDCFeatureHighlightColorThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCFeatureHighlightColorThemer
    πŸ—„ To:

    πŸ”‹ FeatureHighlight+FontThemer

    πŸ—„ MDCFeatureHighlightFontThemer(ToBeDeprecated)

    πŸ†• new category: MDCFeatureHighlightFontThemer(ToBeDeprecated)

    modified class method: +applyFontScheme:toFeatureHighlightView: in MDCFeatureHighlightFontThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCFeatureHighlightFontThemer
    πŸ—„ To:

    πŸ”‹ FeatureHighlight+TypographyThemer

    πŸ—„ MDCFeatureHighlightTypographyThemer(ToBeDeprecated)

    πŸ†• new category: MDCFeatureHighlightTypographyThemer(ToBeDeprecated)

    modified class method: +applyTypographyScheme:toFeatureHighlightViewController: in MDCFeatureHighlightTypographyThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCFeatureHighlightTypographyThemer
    πŸ—„ To:

    FlexibleHeader+ColorThemer

    πŸ—„ MDCFlexibleHeaderColorThemer(ToBeDeprecated)

    modified class method: +applySemanticColorScheme:toFlexibleHeaderView: in MDCFlexibleHeaderColorThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCFlexibleHeaderColorThemer
    πŸ—„ To:

    modified class method: +applySurfaceVariantWithColorScheme:toFlexibleHeaderView: in MDCFlexibleHeaderColorThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCFlexibleHeaderColorThemer
    πŸ—„ To:

    List+ColorThemer

    πŸ—„ MDCListColorThemer(ToBeDeprecated)

    πŸ†• new category: MDCListColorThemer(ToBeDeprecated)

    modified class method: +applySemanticColorScheme:toBaseCell: in MDCListColorThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCListColorThemer
    πŸ—„ To:

    modified class method: +applySemanticColorScheme:toSelfSizingStereoCell: in MDCListColorThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCListColorThemer
    πŸ—„ To:

    List+ListThemer

    πŸ—„ MDCListThemer(ToBeDeprecated)

    πŸ†• new category: MDCListThemer(ToBeDeprecated)

    modified class method: +applyScheme:toSelfSizingStereoCell: in MDCListThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCListThemer
    πŸ—„ To:

    modified class method: +applyScheme:toBaseCell: in MDCListThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCListThemer
    πŸ—„ To:

    List+TypographyThemer

    πŸ—„ MDCListTypographyThemer(ToBeDeprecated)

    πŸ†• new category: MDCListTypographyThemer(ToBeDeprecated)

    modified class method: +applyTypographyScheme:toSelfSizingStereoCell: in MDCListTypographyThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCListTypographyThemer
    πŸ—„ To:

    NavigationBar+ColorThemer

    πŸ—„ MDCNavigationBarColorThemer(ToBeDeprecated)

    modified class method: +applySurfaceVariantWithColorScheme:toNavigationBar: in MDCNavigationBarColorThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCNavigationBarColorThemer
    πŸ—„ To:

    modified class method: +applySemanticColorScheme:toNavigationBar: in MDCNavigationBarColorThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCNavigationBarColorThemer
    πŸ—„ To:

    NavigationBar+TypographyThemer

    πŸ—„ MDCNavigationBarTypographyThemer(ToBeDeprecated)

    πŸ†• new category: MDCNavigationBarTypographyThemer(ToBeDeprecated)

    modified class method: +applyTypographyScheme:toNavigationBar: in MDCNavigationBarTypographyThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCNavigationBarTypographyThemer
    πŸ—„ To:

    NavigationDrawer+ColorThemer

    πŸ—„ MDCBottomDrawerColorThemer(ToBeDeprecated)

    πŸ†• new category: MDCBottomDrawerColorThemer(ToBeDeprecated)

    modified class method: +applySemanticColorScheme:toBottomDrawer: in MDCBottomDrawerColorThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCBottomDrawerColorThemer
    πŸ—„ To:

    Slider+ColorThemer

    πŸ—„ MDCSliderColorThemer(ToBeDeprecated)

    modified class method: +applySemanticColorScheme:toSlider: in MDCSliderColorThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCSliderColorThemer
    πŸ—„ To:

    Snackbar+ColorThemer

    πŸ—„ MDCSnackbarColorThemer(Deprecated)

    modified class method: +applySemanticColorScheme: in MDCSnackbarColorThemer(Deprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCSnackbarColorThemer
    πŸ—„ To:

    modified class method: +applySemanticColorScheme:toSnackbarManager: in MDCSnackbarColorThemer(Deprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCSnackbarColorThemer
    πŸ—„ To:

    Snackbar+FontThemer

    πŸ—„ MDCSnackbarFontThemer(Deprecated)

    πŸ†• new category: MDCSnackbarFontThemer(Deprecated)

    modified class method: +applyFontScheme:toSnackbarMessageView: in MDCSnackbarFontThemer(Deprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCSnackbarFontThemer
    πŸ—„ To:

    modified class method: +applyFontScheme: in MDCSnackbarFontThemer(Deprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCSnackbarFontThemer
    πŸ—„ To:

    Snackbar+TypographyThemer

    πŸ—„ MDCSnackbarTypographyThemer(Deprecated)

    πŸ†• new category: MDCSnackbarTypographyThemer(Deprecated)

    modified class method: +applyTypographyScheme: in MDCSnackbarTypographyThemer(Deprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCSnackbarTypographyThemer
    πŸ—„ To:

    Tabs+ColorThemer

    πŸ—„ MDCTabBarColorThemer(ToBeDeprecated)

    modified class method: +applySemanticColorScheme:toTabs: in MDCTabBarColorThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCTabBarColorThemer
    πŸ—„ To:

    modified class method: +applySurfaceVariantWithColorScheme:toTabs: in MDCTabBarColorThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCTabBarColorThemer
    πŸ—„ To:

    Tabs+FontThemer

    πŸ—„ MDCTabBarFontThemer(ToBeDeprecated)

    πŸ†• new category: MDCTabBarFontThemer(ToBeDeprecated)

    modified class method: +applyFontScheme:toTabBar: in MDCTabBarFontThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCTabBarFontThemer
    πŸ—„ To:

    Tabs+TypographyThemer

    πŸ—„ MDCTabBarTypographyThemer(ToBeDeprecated)

    πŸ†• new category: MDCTabBarTypographyThemer(ToBeDeprecated)

    modified class method: +applyTypographyScheme:toTabBar: in MDCTabBarTypographyThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCTabBarTypographyThemer
    πŸ—„ To:

    TextFields+ColorThemer

    πŸ—„ MDCFilledTextFieldColorThemer(ToBeDeprecated)

    πŸ†• new category: MDCFilledTextFieldColorThemer(ToBeDeprecated)

    modified class method: +applySemanticColorScheme:toTextInputControllerFilled: in MDCFilledTextFieldColorThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCFilledTextFieldColorThemer
    πŸ—„ To:

    πŸ—„ MDCTextFieldColorThemer(ToBeDeprecated)

    modified class method: +applySemanticColorScheme:toTextInput: in MDCTextFieldColorThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCTextFieldColorThemer
    πŸ—„ To:

    modified class method: +applySemanticColorScheme:toAllTextInputControllersOfClass: in MDCTextFieldColorThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCTextFieldColorThemer
    πŸ—„ To:

    modified class method: +applySemanticColorScheme:toTextInputController: in MDCTextFieldColorThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCTextFieldColorThemer
    πŸ—„ To:

    πŸ—„ MDCOutlinedTextFieldColorThemer(ToBeDeprecated)

    πŸ†• new category: MDCOutlinedTextFieldColorThemer(ToBeDeprecated)

    modified class method: +applySemanticColorScheme:toTextInputController: in MDCOutlinedTextFieldColorThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCOutlinedTextFieldColorThemer
    πŸ—„ To:

    TextFields+FontThemer

    πŸ—„ MDCTextFieldFontThemer(ToBeDeprecated)

    πŸ†• new category: MDCTextFieldFontThemer(ToBeDeprecated)

    modified class method: +applyFontScheme:toAllTextInputControllersOfClass: in MDCTextFieldFontThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCTextFieldFontThemer
    πŸ—„ To:

    modified class method: +applyFontScheme:toTextInputController: in MDCTextFieldFontThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCTextFieldFontThemer
    πŸ—„ To:

    modified class method: +applyFontScheme:toTextField: in MDCTextFieldFontThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCTextFieldFontThemer
    πŸ—„ To:

    TextFields+TypographyThemer

    πŸ—„ MDCTextFieldTypographyThemer(ToBeDeprecated)

    πŸ†• new category: MDCTextFieldTypographyThemer(ToBeDeprecated)

    modified class method: +applyTypographyScheme:toAllTextInputControllersOfClass: in MDCTextFieldTypographyThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCTextFieldTypographyThemer
    πŸ—„ To:

    modified class method: +applyTypographyScheme:toTextInput: in MDCTextFieldTypographyThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCTextFieldTypographyThemer
    πŸ—„ To:

    modified class method: +applyTypographyScheme:toTextInputController: in MDCTextFieldTypographyThemer(ToBeDeprecated)

    Type of change: parent.usr
    From: c:objc(cs)MDCTextFieldTypographyThemer
    πŸ—„ To:

    Component changes

    πŸ’₯ Breaking changes

    AppBar

    πŸ”„ Changes

    ActionSheet

    ActivityIndicator

    AppBar

    BottomAppBar

    BottomNavigation

    BottomSheet

    ButtonBar

    Buttons

    Cards

    Chips

    πŸ”Š Dialogs

    πŸ”‹ FeatureHighlight

    FlexibleHeader

    HeaderStackView

    Ink

    List

    NavigationBar

    NavigationDrawer

    PageControl

    ProgressView

    Slider

    Snackbar

    Tabs

    TextFields

    Multi-component changes


  • v82.0.0 Changes

    πŸš€ In this major release, we dropped support for iOS 8 in all components. We also introduced new method and properties for AppBar, BottomSheet and NavigationDrawer.

    πŸ’₯ Breaking changes

    πŸš€ This release drops support for iOS 8 and the library, catalog, examples, and demos may no longer build for iOS 8 targets or may crash even if building succeeds. Clients will need to set their minimum deployment targets to iOS 9 or later.

    πŸ†• New features

    βž• Add support for MDCAppBarNavigationController delegate to pick a tracking scroll view

    An optional delegate method was added to allow clients to specify the controller's tracking scroll view. The delegate may return nil if no appropriate tracking scroll view is present.

    Swift

    func appBarNavigationController(_ navigationController: MDCAppBarNavigationController,
                                  trackingScrollViewFor trackingScrollViewForViewController: UIViewController,
                                  suggestedTrackingScrollView: UIScrollView?) -> UIScrollView? {
      return trackingScrollView
    }
    

    Objective-C

    - (UIScrollView *)appBarNavigationController:(MDCAppBarNavigationController *)navigationController
                      trackingScrollViewForViewController:(UIViewController *)viewController
                              suggestedTrackingScrollView:(UIScrollView *)scrollView {
      return self.trackingScrollView;
    }
    

    flashScrollIndicators in BottomSheet

    MDCBottomSheetController has a new API that will flash the scroll indicators when the view appears.

    Swift

    bottomSheet.shouldFlashScrollIndicatorsOnAppearance = true;
    

    Objective-C

    self.bottomSheet.shouldFlashScrollIndicatorsOnAppearance = YES;
    

    maximumInitialDrawerHeight in NavigationDrawer

    Clients can now override the initial drawer height on MDCBottomDrawerViewController with a desired height in points.

    Swift

    bottomDrawer.maximumInitialDrawerHeight = 1000;
    

    Objective-C

    self.bottomDrawer.maximumInitialDrawerHeight = 1000;
    

    API changes

    AppBar

    MDCAppBarNavigationControllerDelegate

    πŸ†• new method: -appBarNavigationController:trackingScrollViewForViewController:suggestedTrackingScrollView: in MDCAppBarNavigationControllerDelegate

    BottomSheet

    MDCBottomSheetController

    πŸ†• new property: shouldFlashScrollIndicatorsOnAppearance in MDCBottomSheetController

    NavigationDrawer

    MDCBottomDrawerViewController

    πŸ†• new property: maximumInitialDrawerHeight in MDCBottomDrawerViewController

    MDCBottomDrawerPresentationController

    πŸ†• new property: maximumInitialDrawerHeight in MDCBottomDrawerPresentationController

    Tabs+Theming

    πŸ†• New extension.

    Component changes

    Multi-component breaking changes

    πŸ”„ Changes

    AppBar

    BottomNavigation

    BottomSheet

    Buttons

    πŸ”Š Dialogs

    NavigationDrawer

    Tabs

    TextFields

    Multi-component changes


  • v81.1.0 Changes

    πŸš€ In this minor release we introduced a new beta component, Banner. We also added Ripple support for Buttons, along with text contrast improvements to Tabs and Bottom Navigation.

    πŸ†• New features

    Ripple integration with Buttons

    βœ… Buttons now support the latest iteration of the Material Design "ripple" effect. Clients can test this functionality by setting enableRippleBehavior to YES.

    Swift

    myButton.enableRippleBehavior = true
    

    Objective-C

    self.myButton.enableRippleBehavior = YES;
    

    API changes

    Banner

    πŸ†• New component.

    Component changes

    πŸ”„ Changes

    ActionSheet

    Banner

    BottomNavigation

    Buttons

    NavigationDrawer

    Tabs

    TextFields

    Multi-component changes


  • v81.0.0 Changes

    πŸš€ This major release introduces the Ripple component and integrates it with Cards. There are also πŸ‘ visual changes for badges on Tabs, multi-line title support for Bottom Navigation, and improved πŸ‘ Dynamic Type support for Buttons and Feature Highlight.

    πŸ’₯ Breaking changes

    The appearance of badges on MDCTabBar has changed. Badges now appear similar to those on 0️⃣ MDCBottomNavigationBar and are, by default, a red "pill" shape with white text. The color can be customized by assigning a value to - UITabBarItem.badgeColor.

    πŸ†• New features

    Ripple integration with Cards

    βœ… Cards now support the latest iteration of the Material Design "ripple" effect. Clients can test this functionality by setting enableRippleBehavior to YES.

    Swift

    myCard.enableRippleBehavior = true
    

    Objective-C

    self.myCard.enableRippleBehavior = YES;
    

    πŸ‘ Multi-line title support in Bottom Navigation

    πŸ‘ Clients can enable multi-line title support in MDCBottomNavigationBar by setting titlesNumberOfLines to a value other than 1. This API should be used only as a last resort, when it is not possible to provide shorter titles that fit within the available screen space.

    Swift

    bottomNavigationBar.titlesNumberOfLines = 0
    

    Objective-C

    self.bottomNavigationBar.titlesNumberOfLines = 0;
    

    Automatic Dynamic Type font adjustment in Feature Highlight and Buttons

    πŸ‘ Buttons and Feature Highlight now support enabling automatic font size adjustment for Dynamic Type when the fonts used by the components have scaling curves attached using MDCFontScaler. Both components use the new scaling if mdc_adjustsFontForContentSizeCategory is set to YES.

    Swift

    // The new TypographyScheme defaults provide scaled fonts
    containerScheme.typographyScheme = MDCTypographyScheme.init(defaults: .material201902)
    let button = MDCButton()
    button.applyContainedTheme(withScheme: containerScheme)
    button.setTitle("Submit", for: UIControlState())
    // Enable automatic font adjustment
    button.mdc_adjustsFontForContentSizeCategory = true
    

    Objective-C

    // The new TypographyScheme defaults provide scaled fonts
    self.containerScheme.typographyScheme =
        [[MDCTypographyScheme alloc] initWithDefaults: MDCTypographySchemeDefaultsMaterial201804];
    MDCButton *button = [[MDCButton alloc] init];
    [button applyContainedThemeWithScheme:self.containerScheme];
    [button setTitle:@"Submit" forState:UIControlStateNormal];
    // Enable automatic font adjustment
    button.mdc_adjustsFontForContentSizeCategory = YES;
    

    API changes

    Banner

    MDCBannerView

    πŸ†• new property: textLabel in MDCBannerView

    πŸ†• new property: imageView in MDCBannerView

    πŸ†• new property: leadingButton in MDCBannerView

    πŸ†• new property: trailingButton in MDCBannerView

    βœ‚ removed property: buttons in MDCBannerView

    βœ‚ removed property: text in MDCBannerView

    βœ‚ removed property: image in MDCBannerView

    βœ‚ removed property: numberOfButtons in MDCBannerView

    modified class: MDCBannerView

    Type of change: Declaration
    From: @interface MDCBannerView : UIView @property(nonatomic, copy, nonnull) NSString *text; @property(nonatomic, strong, nullable) UIImage *image; // default is nil @property(nonatomic, assign) NSUInteger numberOfButtons; // default is 1 /** The buttons representing the banner's actions. */ @property(nonatomic, readonly, copy, nonnull) NSArray<MDCButton *> *buttons; @end
    πŸ”§ To:

    BottomNavigation

    MDCBottomNavigationBar

    πŸ†• new property: titlesNumberOfLines in MDCBottomNavigationBar

    Buttons

    MDCButton

    πŸ†• new property: mdc_legacyFontScaling in MDCButton

    Cards

    MDCCardCollectionCell

    πŸ†• new property: rippleView in MDCCardCollectionCell

    πŸ†• new property: dragged in MDCCardCollectionCell

    πŸ†• new property: enableRippleBehavior in MDCCardCollectionCell

    modified class: MDCCardCollectionCell

    Type of change: Declaration
    0️⃣ From:
    0️⃣ To:

    MDCCard

    πŸ†• new property: rippleView in MDCCard

    πŸ†• new property: enableRippleBehavior in MDCCard

    modified class: MDCCard

    Type of change: Declaration
    0️⃣ From:
    0️⃣ To:

    πŸ”‹ FeatureHighlight

    MDCFeatureHighlightView

    πŸ†• new property: mdc_legacyFontScaling in MDCFeatureHighlightView

    modified class: MDCFeatureHighlightView

    Type of change: Declaration
    πŸ’» From:
    πŸ’» To:

    MDCFeatureHighlightViewController

    πŸ†• new property: mdc_legacyFontScaling in MDCFeatureHighlightViewController

    Ripple

    MDCRippleTouchController

    πŸ†• new method: -addRippleToView: in MDCRippleTouchController

    modified method: -init in MDCRippleTouchController

    Type of change: key.always_unavailable
    From: 1
    To: 0

    MDCRippleTouchControllerDelegate

    πŸ†• new method: -rippleTouchController:insertRippleView:intoView: in MDCRippleTouchControllerDelegate

    Component changes

    πŸ”„ Changes

    AppBar

    BottomNavigation

    Buttons

    πŸ”‹ FeatureHighlight

    Ripple

    Tabs