| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- //
- // LNJoinUsPhotoExamplePanel.swift
- // Gami
- //
- // Created by OneeChan on 2026/1/22.
- //
- import Foundation
- import UIKit
- import SnapKit
- class LNJoinUsPhotoExamplePanel: LNPopupView {
- private let titleLabel = UILabel()
- private let descLabel = UILabel()
-
- private let imageView = UIImageView()
-
- private var curItem: LNSkillFieldExample?
-
- override init(frame: CGRect) {
- super.init(frame: frame)
-
- setupViews()
- }
-
- func update(_ example: LNSkillFieldExample) {
- titleLabel.text = example.title
- descLabel.text = example.desc
-
- imageView.sd_setImage(with: URL(string: example.value))
- { [weak self] image, _, _, _ in
- guard let self else { return }
- guard let image else { return }
- imageView.snp.makeConstraints { make in
- make.height.equalTo(self.imageView.snp.width)
- .multipliedBy(image.size.height / image.size.width).priority(.high)
- }
- }
-
- curItem = example
- }
-
- required init?(coder: NSCoder) {
- fatalError("init(coder:) has not been implemented")
- }
- }
- extension LNJoinUsPhotoExamplePanel {
- private func setupViews() {
- let headerView = buildHeader()
- container.addSubview(headerView)
- headerView.snp.makeConstraints { make in
- make.horizontalEdges.equalToSuperview()
- make.top.equalToSuperview()
- }
-
- imageView.layer.cornerRadius = 12
- imageView.clipsToBounds = true
- imageView.contentMode = .scaleAspectFit
- imageView.onTap { [weak self] in
- guard let self else { return }
- guard let curItem else { return }
- presentImagePreview([curItem.value], 0)
- }
- container.addSubview(imageView)
- imageView.snp.makeConstraints { make in
- make.horizontalEdges.equalToSuperview().inset(32)
- make.top.equalTo(headerView.snp.bottom)
- make.bottom.equalToSuperview().offset(commonBottomInset)
- make.height.equalTo(imageView.snp.width).multipliedBy(159.0 / 311.0).priority(.low)
- make.height.lessThanOrEqualTo(UIScreen.main.bounds.height * 0.5 - 70)
- }
- }
-
- private func buildHeader() -> UIView {
- let container = UIView()
-
- titleLabel.font = .heading_h3
- titleLabel.textColor = .text_5
- titleLabel.numberOfLines = 0
- titleLabel.textAlignment = .center
- container.addSubview(titleLabel)
- titleLabel.snp.makeConstraints { make in
- make.horizontalEdges.equalToSuperview().inset(32)
- make.top.equalToSuperview().offset(13)
- }
-
- descLabel.font = .body_xs
- descLabel.textColor = .text_3
- descLabel.numberOfLines = 0
- descLabel.textAlignment = .center
- container.addSubview(descLabel)
- descLabel.snp.makeConstraints { make in
- make.horizontalEdges.equalToSuperview().inset(32)
- make.bottom.equalToSuperview().offset(-13)
- make.top.equalTo(titleLabel.snp.bottom).offset(2)
- }
-
- return container
- }
- }
|