| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 |
- //
- // LNJoinUsAvatarExamplePanel.swift
- // Gami
- //
- // Created by OneeChan on 2026/1/20.
- //
- import Foundation
- import UIKit
- import SnapKit
- class LNJoinUsAvatarExamplePanel: LNPopupView {
- override init(frame: CGRect) {
- super.init(frame: frame)
-
- setupViews()
- }
-
- required init?(coder: NSCoder) {
- fatalError("init(coder:) has not been implemented")
- }
- }
- extension LNJoinUsAvatarExamplePanel {
- private func setupViews() {
- let header = buildHeader()
- container.addSubview(header)
- header.snp.makeConstraints { make in
- make.horizontalEdges.equalToSuperview()
- make.top.equalToSuperview()
- }
-
- let goodExample = buildGoodExample()
- container.addSubview(goodExample)
- goodExample.snp.makeConstraints { make in
- make.centerX.equalToSuperview()
- make.top.equalTo(header.snp.bottom).offset(3)
- make.leading.greaterThanOrEqualToSuperview().offset(16)
- }
-
- let errExample = buildErr()
- container.addSubview(errExample)
- errExample.snp.makeConstraints { make in
- make.horizontalEdges.equalToSuperview().inset(16)
- make.top.equalTo(goodExample.snp.bottom).offset(20)
- make.bottom.equalToSuperview().offset(commonBottomInset)
- }
- }
-
- private func buildHeader() -> UIView {
- let container = UIView()
- container.snp.makeConstraints { make in
- make.height.equalTo(50)
- }
-
- let titleLabel = UILabel()
- titleLabel.font = .heading_h3
- titleLabel.textColor = .text_5
- titleLabel.text = .init(key: "B00047")
- container.addSubview(titleLabel)
- titleLabel.snp.makeConstraints { make in
- make.center.equalToSuperview()
- }
-
- let closeButton = UIButton()
- closeButton.setImage(.init(systemName: "xmark")?.withRenderingMode(.alwaysTemplate), for: .normal)
- closeButton.tintColor = .text_2
- closeButton.addAction(UIAction(handler: { [weak self] _ in
- guard let self else { return }
- dismiss()
- }), for: .touchUpInside)
- container.addSubview(closeButton)
- closeButton.snp.makeConstraints { make in
- make.centerY.equalToSuperview()
- make.trailing.equalToSuperview().offset(-12)
- make.width.height.equalTo(24)
- }
-
- return container
- }
-
- private func buildGoodExample() -> UIView {
- let container = UIView()
-
- let avatar = UIImageView()
- avatar.image = .icAvatarExampleCorrect
- avatar.layer.cornerRadius = 12
- avatar.clipsToBounds = true
- container.addSubview(avatar)
- avatar.snp.makeConstraints { make in
- make.leading.top.equalToSuperview()
- make.width.height.equalTo(100)
- }
-
- let checkIc = UIImageView()
- checkIc.image = .icCheck26
- container.addSubview(checkIc)
- checkIc.snp.makeConstraints { make in
- make.trailing.equalTo(avatar).offset(2)
- make.bottom.equalTo(avatar).offset(2)
- make.bottom.equalToSuperview()
- }
-
- let stackView = UIStackView()
- stackView.axis = .vertical
- stackView.spacing = 9
- container.addSubview(stackView)
- stackView.snp.makeConstraints { make in
- make.leading.equalTo(avatar.snp.trailing).offset(18)
- make.trailing.equalToSuperview()
- make.centerY.equalToSuperview()
- }
-
- let text1 = buildExampleText(.init(key: "B00037"))
- stackView.addArrangedSubview(text1)
-
- let text2 = buildExampleText(.init(key: "B00048"))
- stackView.addArrangedSubview(text2)
-
- let text3 = buildExampleText(.init(key: "B00049"))
- stackView.addArrangedSubview(text3)
-
- return container
- }
-
- private func buildExampleText(_ text: String) -> UIView {
- let container = UIView()
-
- let dot = UIView()
- dot.backgroundColor = .primary_3
- dot.layer.cornerRadius = 3
- container.addSubview(dot)
- dot.snp.makeConstraints { make in
- make.leading.equalToSuperview()
- make.top.equalToSuperview().offset(5)
- make.width.height.equalTo(6)
- }
-
- let titleLabel = UILabel()
- titleLabel.font = .body_m
- titleLabel.textColor = .text_5
- titleLabel.text = text
- titleLabel.numberOfLines = 0
- container.addSubview(titleLabel)
- titleLabel.snp.makeConstraints { make in
- make.verticalEdges.equalToSuperview()
- make.trailing.equalToSuperview()
- make.leading.equalTo(dot.snp.trailing).offset(7)
- }
-
- return container
- }
-
- private func buildErr() -> UIView {
- let container = UIStackView()
- container.axis = .vertical
- container.spacing = 12
-
- let line1 = UIStackView()
- line1.spacing = 13
- line1.distribution = .fillEqually
- line1.alignment = .top
- line1.addArrangedSubview(buildErrExample(.icAvatarExample1, text: .init(key: "B00050")))
- line1.addArrangedSubview(buildErrExample(.icAvatarExample2, text: .init(key: "B00051")))
- line1.addArrangedSubview(buildErrExample(.icAvatarExample3, text: .init(key: "B00052")))
- line1.addArrangedSubview(buildErrExample(.icAvatarExample4, text: .init(key: "B00053")))
- container.addArrangedSubview(line1)
-
- let line2 = UIStackView()
- line2.spacing = 13
- line2.distribution = .fillEqually
- line2.alignment = .top
- line2.addArrangedSubview(buildErrExample(.icAvatarExample5, text: .init(key: "B00054")))
- line2.addArrangedSubview(buildErrExample(.icAvatarExample6, text: .init(key: "B00055")))
- line2.addArrangedSubview(buildErrExample(.icAvatarExample7, text: .init(key: "B00056")))
- line2.addArrangedSubview(buildErrExample(.icAvatarExample8, text: .init(key: "B00057")))
- container.addArrangedSubview(line2)
-
- return container
- }
-
- private func buildErrExample(_ icon: UIImage, text: String) -> UIView {
- let container = UIView()
-
- let avatar = UIImageView()
- avatar.image = icon
- container.addSubview(avatar)
- avatar.snp.makeConstraints { make in
- make.horizontalEdges.equalToSuperview()
- make.top.equalToSuperview()
- make.height.equalTo(avatar.snp.width)
- }
-
- let xmark = UIImageView()
- xmark.image = .icXMark
- container.addSubview(xmark)
- xmark.snp.makeConstraints { make in
- make.centerX.equalToSuperview()
- make.centerY.equalTo(avatar.snp.bottom)
- }
-
- let titleLabel = UILabel()
- titleLabel.font = .body_xs
- titleLabel.textColor = .text_5
- titleLabel.text = text
- titleLabel.textAlignment = .center
- titleLabel.numberOfLines = 2
- container.addSubview(titleLabel)
- titleLabel.snp.makeConstraints { make in
- make.horizontalEdges.equalToSuperview()
- make.top.equalTo(xmark.snp.bottom)
- make.bottom.equalToSuperview()
- }
-
- return container
- }
- }
|