| // Copyright 2018-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.MaterialCards_CardThemer |
| |
| class CardExampleViewController: UIViewController { |
| @IBOutlet weak var imageView: CardImageView! |
| @IBOutlet weak var card: MDCCard! |
| @IBOutlet weak var button: MDCButton! |
| |
| var colorScheme = MDCSemanticColorScheme() |
| var shapeScheme = MDCShapeScheme() |
| var typographyScheme = MDCTypographyScheme() |
| |
| override func viewDidLoad() { |
| super.viewDidLoad() |
| |
| // The main image from the xib is taken from: https://unsplash.com/photos/wMzx2nBdeng |
| // License details: https://unsplash.com/license |
| let bundle = Bundle(for: CardExampleViewController.self) |
| bundle.loadNibNamed("CardExampleViewController", owner: self, options: nil) |
| view.frame = self.view.bounds |
| |
| let buttonScheme = MDCButtonScheme(); |
| buttonScheme.colorScheme = colorScheme |
| buttonScheme.typographyScheme = typographyScheme |
| MDCTextButtonThemer.applyScheme(buttonScheme, to: button) |
| |
| let cardScheme = MDCCardScheme(); |
| cardScheme.colorScheme = colorScheme |
| cardScheme.shapeScheme = shapeScheme |
| MDCCardThemer.applyScheme(cardScheme, to: card) |
| card.isInteractable = false |
| |
| imageView.isAccessibilityElement = true |
| imageView.accessibilityLabel = "Missing Dish" |
| } |
| |
| override public var traitCollection: UITraitCollection { |
| if UIDevice.current.userInterfaceIdiom == .pad && UIDevice.current.orientation.isPortrait { |
| return UITraitCollection(traitsFrom:[UITraitCollection(horizontalSizeClass: .compact), |
| UITraitCollection(verticalSizeClass: .regular)]) |
| } |
| return super.traitCollection |
| } |
| |
| } |
| |
| extension CardExampleViewController { |
| |
| class func catalogMetadata() -> [String: Any] { |
| return [ |
| "breadcrumbs": ["Cards", "Card (Swift)"], |
| "description": "Cards contain content and actions about a single subject.", |
| "primaryDemo": true, |
| "presentable": true, |
| ] |
| } |
| } |
| |
| class CardImageView: UIImageView { |
| override func layoutSubviews() { |
| super.layoutSubviews() |
| self.curveImageToCorners() |
| } |
| |
| func curveImageToCorners() { |
| // The main image from the xib is taken from: https://unsplash.com/photos/wMzx2nBdeng |
| // License details: https://unsplash.com/license |
| if let card = self.superview as? MDCCard, |
| let shapedShadowLayer = card.layer as? MDCShapedShadowLayer { |
| self.layer.mask = shapedShadowLayer.shapeLayer |
| } |
| } |
| |
| } |