// // Copyright (c) 2019 Open Whisper Systems. All rights reserved. // import UIKit import PromiseKit @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 = kCAFilterTrilinear heroImageView.layer.magnificationFilter = kCAFilterTrilinear heroImageView.setCompressionResistanceLow() heroImageView.setContentHuggingVerticalLow() let titleLabel = self.titleLabel(text: NSLocalizedString("ONBOARDING_SPLASH_TITLE", comment: "Title of the 'onboarding splash' view.")) view.addSubview(titleLabel) titleLabel.autoPinEdges(toSuperviewMarginsExcludingEdge: .bottom) 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_dynamicTypeCaption1 explanationLabel.numberOfLines = 0 explanationLabel.textAlignment = .center explanationLabel.lineBreakMode = .byWordWrapping explanationLabel.isUserInteractionEnabled = true explanationLabel.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(explanationLabelTapped))) // TODO: Make sure this all fits if dynamic font sizes are maxed out. let continueButton = self.button(title: NSLocalizedString("BUTTON_CONTINUE", comment: "Label for 'continue' button."), selector: #selector(continuePressed)) view.addSubview(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 } UIApplication.shared.openURL(url) } @objc func continuePressed() { Logger.info("") onboardingController.onboardingSplashDidComplete(viewController: self) } }