| // Copyright 2019-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 UIKit |
| import MaterialComponents.MaterialButtons_ButtonThemer |
| import MaterialComponents.MaterialButtons_Theming |
| import MaterialComponents.MaterialCards_Theming |
| import MaterialComponents.MaterialContainerScheme |
| |
| class CardWithRippleExample: UIViewController { |
| var card = MDCCard() |
| var button = MDCButton() |
| |
| @objc var containerScheme: MDCContainerScheming |
| |
| override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) { |
| card.enableRippleBehavior = true |
| containerScheme = MDCContainerScheme() |
| super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) |
| } |
| |
| required init?(coder aDecoder: NSCoder) { |
| fatalError("init(coder:) has not been implemented") |
| } |
| |
| override func viewDidLoad() { |
| super.viewDidLoad() |
| view.backgroundColor = .white |
| button.setTitle("Button", for: .normal) |
| card.applyTheme(withScheme: containerScheme) |
| card.backgroundColor = UIColor.blue.withAlphaComponent(0.05) |
| button.applyContainedTheme(withScheme: containerScheme) |
| view.addSubview(card) |
| card.addSubview(button) |
| card.translatesAutoresizingMaskIntoConstraints = false |
| button.translatesAutoresizingMaskIntoConstraints = false |
| view.addConstraints( |
| NSLayoutConstraint.constraints( |
| withVisualFormat: "H:|-(30)-[card]-(30)-|", |
| options: [], |
| metrics: nil, |
| views: ["card": card])) |
| view.addConstraints( |
| NSLayoutConstraint.constraints( |
| withVisualFormat: "V:|-(120)-[card]-(60)-|", |
| options: [], |
| metrics: nil, |
| views: ["card": card])) |
| card.addConstraints( |
| NSLayoutConstraint.constraints( |
| withVisualFormat: "H:|-[button]-|", |
| options: [], |
| metrics: nil, |
| views: ["button": button])) |
| card.addConstraints( |
| NSLayoutConstraint.constraints( |
| withVisualFormat: "V:|-[button]", |
| options: [], |
| metrics: nil, |
| views: ["button": button])) |
| button.addConstraint( |
| NSLayoutConstraint( |
| item: button, attribute: .height, relatedBy: .equal, |
| toItem: nil, attribute: .notAnAttribute, multiplier: 1, |
| constant: 60)) |
| |
| view.accessibilityElements = [card, button] |
| card.isAccessibilityElement = true |
| card.accessibilityTraits = .button |
| card.accessibilityLabel = "Card with button" |
| } |
| } |
| |
| extension CardWithRippleExample { |
| |
| @objc class func catalogMetadata() -> [String: Any] { |
| return [ |
| "breadcrumbs": ["Ripple", "Card with Ripple"], |
| "primaryDemo": false, |
| "presentable": true, |
| ] |
| } |
| } |