mirror of
https://github.com/oxen-io/session-ios.git
synced 2023-12-13 21:30:14 +01:00
83 lines
3.3 KiB
Swift
83 lines
3.3 KiB
Swift
//
|
|
// 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_dynamicTypeSubheadlineClamped
|
|
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)
|
|
}
|
|
}
|