123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274 |
- //
- // TSAIUsedPhotoVC.swift
- // TSLiveWallpaper
- //
- // Created by 100Years on 2025/7/23.
- //
- class TSAIUsedPhotoVC: TSBaseVC {
- var listImageKeylArray:[String] = []
-
- var isShowtips:Bool{
- set{
- UserDefaults.standard.set(newValue ? nil : "1", forKey: "TSAIUsedPhotoVCIsShowtips")
- UserDefaults.standard.synchronize()
- }
- get{
- return UserDefaults.standard.string(forKey: "TSAIUsedPhotoVCIsShowtips") == nil
- }
- }
-
- //###################################### 集合视图 ######################################
- let collectionViewBtootm:CGFloat = 80
- let identifier = "TSAIUsedPhotoVCCell"
- lazy var collectionView: UICollectionView = {
- let layout = UICollectionViewFlowLayout()
- layout.scrollDirection = .vertical
-
- let itemW = (k_ScreenWidth-32.0-13.0-2.0)/2.0
- let itemH = kGetScaleHeight(originalSize: CGSize(width: 165.0, height: 220.0), width: itemW)
- layout.itemSize = CGSize(width: itemW, height: itemH)
- layout.minimumInteritemSpacing = 13
- layout.minimumLineSpacing = 16
- layout.sectionInset = UIEdgeInsets(top: 10, left: 16, bottom: k_Height_TabBar+20, right: 16)
-
- let collectionView = TSBaseCollectionView(frame: .zero, collectionViewLayout: layout)
- collectionView.delegate = self
- collectionView.dataSource = self
- collectionView.register(TSAIUsedPhotoVCCell.self, forCellWithReuseIdentifier: identifier)
- return collectionView
- }()
-
- lazy var pageNullView: TSPageNullView = {
- let pageNullView = TSPageNullView()
- pageNullView.isHidden = true
- return pageNullView
- }()
-
-
- lazy var tipsView: UIView = {
-
- let tipsView = UIView()
- tipsView.backgroundColor = .white.withAlphaComponent(0.1)
- let imageView = UIImageView.createImageView(image:.tips)
- tipsView.addSubview(imageView)
-
- let lab = UILabel.createLabel(text: "Photos are stored on your device for a safer, smoother experience.".localized,font: .font(size: 14),textColor: .white.withAlphaComponent(0.7))
- tipsView.addSubview(lab)
-
- let closeBtn = TSUIExpandedTouchButton()
- closeBtn.setUpButton(image: .closeGary){ [weak self] in
- guard let self = self else { return }
- isShowtips = false
- setUpShowtips()
- }
- tipsView.addSubview(closeBtn)
-
- imageView.snp.makeConstraints { make in
- make.width.height.equalTo(16)
- make.leading.equalTo(8)
- make.top.equalTo(12)
- }
-
- lab.snp.makeConstraints { make in
- make.leading.equalTo(32)
- make.trailing.equalTo(-8)
- make.top.equalTo(12)
- make.bottom.equalTo(-12)
- }
- closeBtn.snp.makeConstraints { make in
- make.trailing.equalTo(-4)
- make.top.equalTo(4)
- make.width.height.equalTo(12)
- }
-
- return tipsView
- }()
-
- override func createView() {
- setNavBarViewHidden(true)
-
- contentView.addSubview(pageNullView)
- contentView.addSubview(collectionView)
- collectionView.snp.makeConstraints { make in
- make.top.bottom.leading.trailing.equalTo(0)
- }
- setUpShowtips()
- }
-
-
- override func dealThings() {
- updateDataView()
- NotificationCenter.default.addObserver(forName: .kPhotoPickerCompleted, object: nil, queue: .main) { [weak self] _ in
- self?.updateDataView()
- }
- }
-
- @objc func updateDataView(){
- listImageKeylArray = TSDBKeyManager.getAllKeyStringArray()
- updateView()
- }
-
- func updateView() {
- collectionView.reloadData()
- pageNullView.isHidden = listImageKeylArray.count > 0
- }
-
- override func viewWillAppear(_ animated: Bool) {
- super.viewWillAppear(animated)
- }
-
-
- func setUpShowtips(){
- if isShowtips,tipsView.superview == nil {
- contentView.addSubview(tipsView)
- tipsView.snp.remakeConstraints{ make in
- make.leading.equalTo(16)
- make.trailing.equalTo(-16)
- make.top.equalTo(16)
- }
-
- collectionView.snp.remakeConstraints{ make in
- make.top.equalTo(tipsView.snp.bottom)
- make.bottom.leading.trailing.equalTo(0)
- }
- }else{
- tipsView.removeFromSuperview()
- collectionView.snp.remakeConstraints{ make in
- make.top.bottom.leading.trailing.equalTo(0)
- }
- }
- }
- }
- extension TSAIUsedPhotoVC: UICollectionViewDataSource ,UICollectionViewDelegate {
-
- public func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
- return listImageKeylArray.count
- }
-
- public func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
-
- let cell = collectionView.dequeueReusableCell(withReuseIdentifier: identifier, for: indexPath)
- if let cell = cell as? TSAIUsedPhotoVCCell ,let keyString = listImageKeylArray.safeObj(At:indexPath.row){
- cell.keyString = keyString
- cell.buttonTapped = { [weak self] cmd in
- self?.handelCellCmd(cmd: cmd,indexPath: indexPath)
- }
- }
-
- return cell
- }
- public func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
- if let keyString = listImageKeylArray.safeObj(At:indexPath.row){
-
- // TSImageStoreTool.retrieveImage(urlString: keyString) { [weak self] image in
- // guard let self = self else { return }
- // guard let image = image else { return }
-
- if let image = TSUserdPhotoDiskTool.loadUserdPhotoImage(imageKey: keyString) {
- let itemModel = TSDiscoverItemModel(style: .colorize,viewModel: TSDiscoverAnimationItemVM(),generateModel: TSGenerateModel(json: TSAIListDataVM.shared.ptp_Colorize))
- let vc = TSAIUploadPhotoVC(titleString: "",upLoadImage: image, generatorStyle: .colorize,disCoverItemModel: itemModel,isUsedPhoto: true)
- vc.setDeleteComplete { [weak self] in
- guard let self = self else { return }
- if let imageKey = listImageKeylArray.safeObj(At: indexPath.item){
- removeKey(imageKey: imageKey)
- }
- }
- self.push(vc,animated: true)
- }
- }
- }
- }
- extension TSAIUsedPhotoVC{
- func handelCellCmd(cmd:String,indexPath: IndexPath){
- if let imageKey = listImageKeylArray.safeObj(At: indexPath.item){
- if cmd == "delete" {
- TSCustomAlertController.show(in: self, config: TSCustomAlertController.AlertConfig(
- message: "Are you sure to delete?".localized,
- cancelTitle: "Delete".localized,
- cancelColor: .red,
- confirmTitle: "Retain".localized,
- confirmColor: .white,
- cancelAction: { [weak self] in
- guard let self = self else { return }
- removeKey(imageKey: imageKey)
- }
- ))
- }
- }
- }
-
- func removeKey(imageKey:String){
- TSDBKeyManager.removeKey(imageKey)
- // TSImageStoreTool.removeImage(urlString: (imageKey))
- TSUserdPhotoDiskTool.removeImageKey(imageKey:imageKey)
- updateDataView()
- }
- }
- extension TSAIUsedPhotoVC:TSTabBarControllerProtocol {
- func tabBarDoubleTap(_ tabbar: UITabBarController){
- collectionView.setContentOffset(CGPoint(x: 0, y: 0), animated: true)
- }
- }
- import JXSegmentedView
- extension TSAIUsedPhotoVC: JXSegmentedListContainerViewListDelegate {
- func listView() -> UIView { return view }
- }
- class TSAIUsedPhotoVCCell: TSBaseCollectionCell {
- var buttonTapped:((String)->Void)?
- var operation:TSGenerateBasePhotoOperation?
- var keyString:String = String(){
- didSet {
- // TSImageStoreTool.retrieveImage(urlString: keyString) { [weak self] image in
- // guard let self = self else { return }
- // showImageView.image = image
- // }
- showImageView.image = TSUserdPhotoDiskTool.loadUserdPhotoImage(imageKey: keyString)
- }
- }
-
- lazy var showImageView: UIImageView = {
- let showImageView = UIImageView.createImageView(imageName:"",contentMode: .scaleAspectFill)
- showImageView.backgroundColor = .gray
- return showImageView
- }()
- @objc func handleLongPress(_ gestureRecognizer: UILongPressGestureRecognizer) {
- // 确保只在手势开始时触发一次
- guard gestureRecognizer.state == .began else { return }
- buttonTapped?("delete")
- }
-
- override func creatUI() {
- let longPressRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(handleLongPress(_:)))
- longPressRecognizer.minimumPressDuration = 0.5 // 设置最小长按时间(秒)
- contentView.addGestureRecognizer(longPressRecognizer)
-
- contentView.layer.borderWidth = 3
- contentView.layer.borderColor = "#DFD7C0".uiCGColor
-
- contentView.addSubview(showImageView)
- showImageView.snp.makeConstraints { make in
- make.top.equalTo(0)
- make.leading.equalTo(0)
- make.trailing.bottom.equalTo(0)
- }
- }
- }
|