// Copyright 2016-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 import MaterialComponents.MaterialButtons_Theming import MaterialComponents.MaterialContainerScheme import MaterialComponents.MaterialDialogs import MaterialComponents.MaterialDialogs_Theming class DialogsLongAlertExampleViewController: UIViewController { let textButton = MDCButton() @objc var containerScheme: MDCContainerScheming = MDCContainerScheme() override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = containerScheme.colorScheme.backgroundColor textButton.setTitle("PRESENT ALERT", for: UIControl.State()) textButton.setTitleColor(UIColor(white: 0.1, alpha:1), for: UIControl.State()) textButton.sizeToFit() textButton.translatesAutoresizingMaskIntoConstraints = false textButton.addTarget(self, action: #selector(tap), for: .touchUpInside) textButton.applyTextTheme(withScheme: containerScheme) self.view.addSubview(textButton) NSLayoutConstraint.activate([ NSLayoutConstraint(item:textButton, attribute:.centerX, relatedBy:.equal, toItem:self.view, attribute:.centerX, multiplier:1.0, constant: 0.0), NSLayoutConstraint(item:textButton, attribute:.centerY, relatedBy:.equal, toItem:self.view, attribute:.centerY, multiplier:1.0, constant: 0.0) ]) } @objc func tap(_ sender: Any) { let messageString = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur " + "ultricies diam libero, eget porta arcu feugiat sit amet. Maecenas placerat felis sed risus " + "maximus tempus. Integer feugiat, augue in pellentesque dictum, justo erat ultricies leo, " + "quis eleifend nisi eros dictum mi. In finibus vulputate eros, in luctus diam auctor in. " + "Aliquam fringilla neque at augue dictum iaculis. Etiam ac pellentesque lectus. Aenean " + "vestibulum, tortor nec cursus euismod, lectus tortor rhoncus massa, eu interdum lectus urna " + "ut nulla. Phasellus elementum lorem sit amet sapien dictum, vel cursus est semper. Aenean " + "vel turpis maximus, accumsan dui quis, cursus turpis. Nunc a tincidunt nunc, ut tempus " + "libero. Morbi ut orci laoreet, luctus neque nec, rhoncus enim. Cras dui erat, blandit ac " + "malesuada vitae, fringilla ac ante. Nullam dui diam, condimentum vitae mi et, dictum " + "euismod libero. Aliquam commodo urna vitae massa convallis aliquet." let materialAlertController = MDCAlertController(title: nil, message: messageString) let action = MDCAlertAction(title:"OK") { (_) in print("OK") } materialAlertController.addAction(action) materialAlertController.applyTheme(withScheme: containerScheme) self.present(materialAlertController, animated: true, completion: nil) } } // MARK: Catalog by convention extension DialogsLongAlertExampleViewController { @objc class func catalogMetadata() -> [String: Any] { return [ "breadcrumbs": ["Dialogs", "Swift Alert Demo"], "primaryDemo": false, "presentable": false, ] } } // MARK: Snapshot Testing by Convention extension DialogsLongAlertExampleViewController { func resetTests() { if presentedViewController != nil { dismiss(animated: false) } } @objc func testPresented() { resetTests() tap(UIButton()) } }