// // Copyright (c) 2019 Open Whisper Systems. All rights reserved. // import UIKit import PromiseKit import SafariServices @objc public class OnboardingSplashViewController: OnboardingBaseViewController { override public func loadView() { super.loadView() view.backgroundColor = Theme.backgroundColor view.layoutMargins = .zero let heroImage = UIImage(named: "onboarding_splash_hero") let heroImageView = UIImageView(image: heroImage) heroImageView.contentMode = .scaleAspectFit heroImageView.layer.minificationFilter = .trilinear heroImageView.layer.magnificationFilter = .trilinear heroImageView.setCompressionResistanceLow() heroImageView.setContentHuggingVerticalLow() heroImageView.accessibilityIdentifier = "onboarding.splash." + "heroImageView" let titleLabel = self.titleLabel(text: NSLocalizedString("ONBOARDING_SPLASH_TITLE", comment: "Title of the 'onboarding splash' view.")) view.addSubview(titleLabel) titleLabel.autoPinEdges(toSuperviewMarginsExcludingEdge: .bottom) titleLabel.accessibilityIdentifier = "onboarding.splash." + "titleLabel" let explanationLabel = UILabel() explanationLabel.text = NSLocalizedString("ONBOARDING_SPLASH_TERM_AND_PRIVACY_POLICY", comment: "Link to the 'terms and privacy policy' in the 'onboarding splash' view.") explanationLabel.textColor = .ows_materialBlue explanationLabel.font = UIFont.ows_dynamicTypeSubheadlineClamped explanationLabel.numberOfLines = 0 explanationLabel.textAlignment = .center explanationLabel.lineBreakMode = .byWordWrapping explanationLabel.isUserInteractionEnabled = true explanationLabel.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(explanationLabelTapped))) explanationLabel.accessibilityIdentifier = "onboarding.splash." + "explanationLabel" let continueButton = self.button(title: NSLocalizedString("BUTTON_CONTINUE", comment: "Label for 'continue' button."), selector: #selector(continuePressed)) view.addSubview(continueButton) continueButton.accessibilityIdentifier = "onboarding.splash." + "continueButton" let stackView = UIStackView(arrangedSubviews: [ heroImageView, UIView.spacer(withHeight: 22), titleLabel, UIView.spacer(withHeight: 92), explanationLabel, UIView.spacer(withHeight: 24), continueButton ]) stackView.axis = .vertical stackView.alignment = .fill stackView.layoutMargins = UIEdgeInsets(top: 32, left: 32, bottom: 32, right: 32) stackView.isLayoutMarginsRelativeArrangement = true view.addSubview(stackView) stackView.autoPinWidthToSuperview() stackView.autoPin(toTopLayoutGuideOf: self, withInset: 0) stackView.autoPin(toBottomLayoutGuideOf: self, withInset: 0) } // MARK: - Events @objc func explanationLabelTapped(sender: UIGestureRecognizer) { guard sender.state == .recognized else { return } guard let url = URL(string: kLegalTermsUrlString) else { owsFailDebug("Invalid URL.") return } let safariVC = SFSafariViewController(url: url) present(safariVC, animated: true) } @objc func continuePressed() { Logger.info("") onboardingController.onboardingSplashDidComplete(viewController: self) } }