MoviaBox/Thimra/Class/Login/Controller/SPLoginViewController.swift
2025-04-25 15:42:52 +08:00

150 lines
5.1 KiB
Swift

//
// SPLoginViewController.swift
// Thimra
//
// Created by on 2025/4/25.
//
import UIKit
class SPLoginViewController: SPViewController {
private lazy var logoImageView: UIImageView = {
let imageView = UIImageView(image: UIImage(named: "login_logo_icon_01"))
return imageView
}()
private lazy var nameImageView: UIImageView = {
let imageView = UIImageView(image: UIImage(named: "login_logo_icon_02"))
return imageView
}()
private lazy var stackView: UIStackView = {
let stackView = UIStackView(arrangedSubviews: [faceBookButton, appleButton])
stackView.axis = .vertical
stackView.spacing = 18
return stackView
}()
private lazy var faceBookButton: UIButton = {
let button = createButton(title: "Login with Facebook", titleColor: .colorFFFFFF(), icon: UIImage(named: "facebook_icon_01"), background: .color0866FF())
return button
}()
private lazy var appleButton: UIButton = {
let button = createButton(title: "Login with Apple", titleColor: .color333333(), icon: UIImage(named: "apple_icon_01"), background: .colorFFFFFF())
return button
}()
private lazy var agreementLabel: YYLabel = {
let agreementStr = "kLoginAgreementText".localized
let userAgreementStr = "User Agreement".localized
let privacyPolicy = "Privacy Policy".localized
let range1 = agreementStr.ocString().range(of: userAgreementStr)
let range2 = agreementStr.ocString().range(of: privacyPolicy)
let text = NSMutableAttributedString(string: agreementStr)
text.font = .fontMedium(ofSize: 10)
text.color = .colorB0B0B3()
text.setTextHighlight(range1, color: .colorFFFFFF(), backgroundColor: nil) { [weak self] _, _, _, _ in
guard let self = self else { return }
let vc = SPWebViewController()
vc.urlStr = SPUserAgreementWebUrl
self.navigationController?.pushViewController(vc, animated: true)
}
text.setTextHighlight(range2, color: .colorFFFFFF(), backgroundColor: nil) { [weak self] _, _, _, _ in
guard let self = self else { return }
let vc = SPWebViewController()
vc.urlStr = SPPrivacyPolicyWebUrl
self.navigationController?.pushViewController(vc, animated: true)
}
let textContainer = YYTextContainer(size: CGSize(width: kSPScreenWidth - 150, height: 100))
let layout = YYTextLayout(container: textContainer, text: text)
let label = YYLabel()
label.textLayout = layout
label.textAlignment = .center
label.numberOfLines = 0
return label
}()
override func viewDidLoad() {
super.viewDidLoad()
self.edgesForExtendedLayout = .top
setBackgroundView(isShowGradient: false)
configNavigationBack()
_setupUI()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.navigationController?.setNavigationBarHidden(false, animated: true)
setNavigationNormalStyle(backgroundColor: .clear, isTranslucent: true)
}
private func createButton(title: String, titleColor: UIColor, icon: UIImage?, background: UIColor) -> UIButton {
let button = JXButton(type: .custom)
button.setBackgroundImage(UIImage(color: background), for: .normal)
button.setTitle(title, for: .normal)
button.setTitleColor(titleColor, for: .normal)
button.jx_font = .fontMedium(ofSize: 14)
button.space = 12
button.setImage(icon, for: .normal)
button.layer.cornerRadius = 8
button.layer.masksToBounds = true
button.snp.makeConstraints { make in
make.height.equalTo(48)
}
return button
}
}
extension SPLoginViewController {
private func _setupUI() {
view.addSubview(logoImageView)
view.addSubview(nameImageView)
view.addSubview(stackView)
view.addSubview(agreementLabel)
// view.addSubview(faceBookButton)
logoImageView.snp.makeConstraints { make in
make.centerX.equalToSuperview()
make.top.equalToSuperview().offset(kSPStatusbarHeight + kSPMainW(120))
}
nameImageView.snp.makeConstraints { make in
make.centerX.equalToSuperview()
make.top.equalTo(logoImageView.snp.bottom).offset(24)
}
stackView.snp.makeConstraints { make in
make.left.equalToSuperview().offset(37)
make.centerX.equalToSuperview()
make.top.equalTo(nameImageView.snp.bottom).offset(40)
}
let size = agreementLabel.textLayout?.textBoundingSize ?? .zero
agreementLabel.snp.makeConstraints { make in
make.centerX.equalToSuperview()
make.size.equalTo(size)
// make.right.lessThanOrEqualToSuperview().offset(-50)
make.bottom.equalToSuperview().offset(-(kSPTabbarSafeBottomMargin + 20))
}
}
}