/
sberpay
/
AgeGate-iOS
Обзор
Документация
Войти
/
sberpay
/
AgeGate-iOS
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
develop
AgeGateExample/Presentation/CartVC/CartCell.swift
91 строка
3 KB
SergeyGladkiy
[0.2.0] БДСЧ сценарий
30 июл 2026, 21:57
30 июл 2026, 21:57
cbcdfcb
Код
Авторство
О чём код?
// // CartCell.swift // AgeGateExample // // Created by Гладкий Сергей Игоревич on 24.07.2026. // import UIKit final class CartCell: UITableViewCell { private lazy var iconView: UIImageView = { let view = UIImageView() view.contentMode = .scaleAspectFit view.tintColor = .secondaryLabel view.widthAnchor.constraint(equalToConstant: 44).isActive = true view.heightAnchor.constraint(equalToConstant: 44).isActive = true return view }() private lazy var titleLabel: UILabel = { let view = UILabel() view.font = .systemFont(ofSize: 14) view.numberOfLines = 0 return view }() private lazy var priceLabel: UILabel = { let view = UILabel() view.font = .systemFont(ofSize: 15, weight: .semibold) return view }() private lazy var badgeLabel: UILabel = { let view = UILabel() view.text = " 18+ " view.font = .systemFont(ofSize: 11, weight: .bold) view.textColor = .white view.backgroundColor = .systemOrange view.layer.cornerRadius = 4 view.layer.masksToBounds = true return view }() private lazy var stepper = CustomStepper() private lazy var textStack: UIStackView = { let view = UIStackView(arrangedSubviews: [titleLabel, priceLabel, badgeLabel]) view.axis = .vertical view.alignment = .leading view.spacing = 4 return view }() private lazy var mainStack: UIStackView = { let view = UIStackView(arrangedSubviews: [iconView, textStack, stepper]) view.axis = .horizontal view.alignment = .center view.spacing = 12 view.translatesAutoresizingMaskIntoConstraints = false return view }() override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { super.init(style: style, reuseIdentifier: reuseIdentifier) selectionStyle = .none setupUI() } required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } func config(item: CartItem, countChanged: @escaping (Int) -> Void) { iconView.image = UIImage(systemName: item.icon) titleLabel.text = item.title priceLabel.text = "\(item.price) ₽" badgeLabel.isHidden = !item.isRestricted stepper.config(value: item.count, valueChanged: countChanged) } private func setupUI() { contentView.addSubview(mainStack) NSLayoutConstraint.activate([ mainStack.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 10), mainStack.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: 16), mainStack.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -16), mainStack.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: -10) ]) } }