123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 |
- //
- // ASRTRStyleView.swift
- // AIPlayRingtones
- //
- // Created by mini on 2025/5/19.
- //
- class ASRTRStyleView: TSBaseView {
-
- var selectedCompleted:((ASGenerateStyleModel,Int)->Void)?
- //选择生成类类型组
- var generateStyleIndex:Int = 0{
- didSet{
- if generateStyleModels.count <= 0 { return }
- DispatchQueue.main.async {
- self.colView.collectionView.selectItem(at: IndexPath(item: self.generateStyleIndex, section: 0), animated: true, scrollPosition: .centeredVertically)
- }
- }
- }
-
- var generateStyleModels:[ASGenerateStyleModel] = []
- {
- didSet{
- colView.reload(with: [TSSimpleSectionData(items: generateStyleModels)])
- self.generateStyleIndex = abs(generateStyleIndex)
- }
- }
- var generateStyleModel:ASGenerateStyleModel?{
- didSet{
- if let generateStyleModel = generateStyleModel {
- selectedCompleted?(generateStyleModel,generateStyleIndex)
- }
- }
- }
- private var collectionViewObserver: TSCollectionViewObserver!
- lazy var colView: TSSimpleCollectionView = {
- let identifier = "ASRTRStyleViewCell"
- let layout = UICollectionViewFlowLayout()
- let cp = TSSimpleCollectionView()
- cp.collectionView.isScrollEnabled = false
- cp.layout.minimumLineSpacing = 16
- cp.layout.minimumInteritemSpacing = 8
- cp.layout.scrollDirection = .vertical
- cp.delegate = self
- let contentInset = UIEdgeInsets(top: 0, left: 16, bottom: 0, right: 16)
- cp.collectionView.contentInset = contentInset
- cp.layout.itemSize = kGetCollectionViewCellSize(sectionInset: contentInset, itemSpacing: 16, originalSize: CGSize(width: 80, height: 104), cellRowNum: 4)
- cp.registerCell(ASRTRStyleViewCell.self,identifier:identifier)
- cp.cellIdentifierForItem = { data in
- return identifier
- }
- return cp
- }()
-
- override func creatUI() {
- contentView.addSubview(colView)
- colView.snp.makeConstraints { make in
- make.edges.equalToSuperview()
- make.height.equalTo(0)
- }
- }
- override func dealThings() {
- // 监听collectionView 的 contentSize
- collectionViewObserver = TSCollectionViewObserver(collectionView: colView.collectionView)
- collectionViewObserver.onContentSizeChange = { [weak self] size in
- guard let self = self else { return }
- print("collectionViewObserver 内容大小变化: \(size)")
- self.colView.snp.updateConstraints { make in
- make.height.equalTo(size.height)
- }
- }
- }
- }
- extension ASRTRStyleView: TSSimpleCollectionViewDelegate {
-
- func collectionView(didTrigger event: TSSmalCoacopods.TSSimpleCellEvent) {
- switch event.action {
- case .tap:
- generateStyleIndex = event.indexPath.row
- if let model = generateStyleModels.safeObj(At: generateStyleIndex) {
- generateStyleModel = model
- }
- default:
- break
- }
- }
-
- }
- class ASRTRStyleViewCell: TSBaseCollectionCell ,TSSimpleConfigurableView {
-
- weak var delegate: (any TSSmalCoacopods.TSSimpleCollectionViewDelegate)?
- var indexPath: IndexPath = IndexPath(item: 0, section: 0)
- var data: Any? {
- didSet {
- if let model = data as? ASGenerateStyleModel {
- proImageView.isHidden = !model.vip
- textLab.text = model.imageText.localized
- imageView.image = UIImage(named: model.imageName)
- }
- }
- }
-
- override var isSelected: Bool{
- didSet{
- textLab.textColor = .white.withAlphaComponent( isSelected ? 1.0 : 0.7)
- boardImageView.isHidden = !isSelected
- }
- }
- lazy var boardImageView: UIImageView = {
- let boardImageView = UIImageView()//.createImageView(image: .ringTextSelectedBoard)
- boardImageView.isHidden = true
-
- DispatchQueue.main.async {
- boardImageView.addGradientBorder(colors: ["#FF96F5".uiColor,"#F4F1EA".uiColor,"#5F7CFF".uiColor],width: 1.5,radius:16*kDesignScale,startPoint: CGPoint(x: 0.5, y: 0),endPoint: CGPoint(x: 0.5, y: 1))
- }
- return boardImageView
- }()
- lazy var imageView: UIImageView = {
- let imageView = UIImageView()
- imageView.cornerRadius = 12
- return imageView
- }()
-
- lazy var proImageView:UIImageView = {
- let proImageView = UIImageView.createImageView(image: .PRO)
- return proImageView
- }()
-
- lazy var textLab: UILabel = {
- let textLab = UILabel.createLabel(font: .font(size:14,weight: .regular),textColor: .white.withAlphaComponent(0.6),textAlignment: .center)
- return textLab
- }()
-
-
- override func creatUI() {
-
- contentView.addSubview(boardImageView)
- boardImageView.snp.makeConstraints { make in
- make.width.height.equalTo(72.0*kDesignScale)
- make.top.equalTo(0)
- make.centerX.equalToSuperview()
- }
-
- contentView.addSubview(imageView)
- imageView.snp.makeConstraints { make in
- make.width.height.equalTo(64.0*kDesignScale)
- make.top.equalTo(4)
- make.centerX.equalToSuperview()
- }
-
- contentView.addSubview(textLab)
- textLab.snp.makeConstraints { make in
- make.top.equalTo(boardImageView.snp.bottom)
- make.leading.trailing.equalTo(0)
- make.bottom.equalTo(0)
- }
-
- imageView.addSubview(proImageView)
- proImageView.snp.makeConstraints { make in
- make.top.equalTo(6)
- make.trailing.equalTo(-8)
- make.width.equalTo(21)
- make.height.equalTo(10)
- }
-
- }
- }
|