blob: d70473944f87ef1e4d0a814f7052808419aaf794 [file] [log] [blame]
// 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
}
}
}