Merge branch 'release-candidate' into stable
tree: 953c7190355d39989ebecacfad317acb4638c935
  1. catalog/
  2. components/
  3. contributing/
  4. demos/
  5. docs/
  6. howto/
  7. scripts/
  8. .arclint
  9. .arcunit
  10. .clang-format
  11. .codecov.yml
  12. .gitignore
  13. .gitmodules
  14. .kokoro
  15. .mdc-docsite.yml
  16. .swift-version
  17. .swiftlint.yml
  18. .travis.yml
  19. AUTHORS
  20. BUILD
  21. CHANGELOG.md
  22. CODE_OF_CONDUCT.md
  23. CODEOWNERS
  24. CONTRIBUTING.md
  25. ISSUE_TEMPLATE.md
  26. LICENSE
  27. material_components_ios.bzl
  28. MaterialComponents.podspec
  29. MaterialComponentsEarlGreyTests.podspec
  30. MaterialComponentsExamples.podspec
  31. MaterialComponentsUnitTests.podspec
  32. mdc_hero.png
  33. PULL_REQUEST_TEMPLATE.md
  34. README.md
  35. ROADMAP.md
  36. VERSION
  37. WORKSPACE
README.md

Material Components for iOS

Build Status Code coverage Chat

Material Components for iOS (MDC-iOS) helps developers execute Material Design. Developed by a core team of engineers and UX designers at Google, these components enable a reliable development workflow to build beautiful and functional iOS apps. Learn more about how Material Components for iOS supports design and usability best practices across platforms in the Material Design Platform Adaptation guidelines.

Material Components for iOS are written in Objective-C and support Swift and Interface Builder.

Useful Links

Trying out Material Components

Our catalog showcases Material Components. You can use the pod try command from anywhere on your machine to try the components, even if you haven't checked out the repo yet:

pod try MaterialComponents

In case you have already checked out the repo, run the following command:

pod install --project-directory=catalog/

If you want to take a look at the implementation of the components, you can find the code inside the Development Pods folder. Use cmd-1 to open the project navigator within Xcode. Peal open the Pods project and inside the Development Pods folder you will find the component source code.

Installation

Requirements

  • Xcode 8.0 or higher.
  • Minimum iOS deployment target of 8.0 or higher
  • Cocoapods

Getting Started with a New Project

Check out our tutorial for a step-by-step guide to setting up a new project using Material Components.

Adding Material Components to an Existing Project

CocoaPods is the easiest way to get started (if you're new to CocoaPods, check out their getting started documentation.)

To install CocoaPods, run the following commands:

sudo gem install cocoapods

To integrate Material Components in your existing application, first create a new Podfile:

cd your-project-directory
pod init

Next, add the Material Components for iOS pod to your target in your Podfile:

target "MyApp" do
  ...
  pod 'MaterialComponents'
end

If you are using Swift, don’t forget to uncomment the use_frameworks! line at the top of your Podfile.

Then run the command:

pod install

Now you‘re ready to get started in Xcode. Don’t forget to open the workspace Cocoapods created for you instead of the original project:

open your-project.xcworkspace

Usage

The components are built upon familiar UIKit classes and can be added to a view with just a couple of lines. Simply import the Material Components header for the component you're interested in, and add it to your view.

Swift

import MaterialComponents.MaterialButtons

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        let raiseButton = MDCRaisedButton()
        raiseButton.setTitle("Raised Button", for: .normal)
        raiseButton.sizeToFit()
        raiseButton.addTarget(self, action: #selector(tapped), for: .touchUpInside)
        view.addSubview(raiseButton)
    }

    @objc func tapped(sender: UIButton){
        print("Button was tapped!")
    }

}

Objective-C

#import "MaterialButtons.h"

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];

  MDCRaisedButton *raisedButton = [[MDCRaisedButton alloc] init];
  [raisedButton setTitle:@"Raised Button" forState:UIControlStateNormal];
  [raisedButton sizeToFit];
  [raisedButton addTarget:self
                   action:@selector(tapped:)
         forControlEvents:UIControlEventTouchUpInside];

  [self.view addSubview:raisedButton];
}

- (void)tapped:(id)sender {
  NSLog(@"Button was tapped!");
}

@end

Attributions

Material Components for iOS uses Material Design icons, copyright Google Inc. and licensed under CC BY 4.0.

Several components use MDFTextAccessibility, copyright Google Inc. and licensed under Apache 2.0 without a NOTICE file.

MDCCatalog uses the Roboto font, copyright 2011 Google Inc. and licensed under Apache 2.0 without a NOTICE file.