Преглед изворни кода

4.3a改造:tscustomStack 改造完毕

kln пре 1 недеља
родитељ
комит
8621339b38

+ 0 - 12
AIPlayRingtones.xcodeproj/project.pbxproj

@@ -21,7 +21,6 @@
 		3DB4D4B22DDF0B960082596A /* FakeBlurView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DB4D4B12DDF0B940082596A /* FakeBlurView.swift */; };
 		3DB4D4B52DE025920082596A /* ASTutorialsVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DB4D4B42DE025910082596A /* ASTutorialsVC.swift */; };
 		3DBEA0CE2DE69B2E000C6859 /* TSSimpleCollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DBEA0B52DE69B2E000C6859 /* TSSimpleCollectionView.swift */; };
-		3DBEA0FF2DE69B2E000C6859 /* TSCustomStackView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DBEA0C02DE69B2E000C6859 /* TSCustomStackView.swift */; };
 		3DBEA1102DE6A04B000C6859 /* SimpleWebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3DBEA10F2DE6A04B000C6859 /* SimpleWebViewController.m */; };
 		3DBEA11A2DE6B086000C6859 /* CustomTabBarController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3DBEA1192DE6B086000C6859 /* CustomTabBarController.m */; };
 		3DBEA11E2DE6B229000C6859 /* NSString+AS.m in Sources */ = {isa = PBXBuildFile; fileRef = 3DBEA11D2DE6B229000C6859 /* NSString+AS.m */; };
@@ -144,7 +143,6 @@
 		3DB4D4B12DDF0B940082596A /* FakeBlurView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FakeBlurView.swift; sourceTree = "<group>"; };
 		3DB4D4B42DE025910082596A /* ASTutorialsVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ASTutorialsVC.swift; sourceTree = "<group>"; };
 		3DBEA0B52DE69B2E000C6859 /* TSSimpleCollectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSSimpleCollectionView.swift; sourceTree = "<group>"; };
-		3DBEA0C02DE69B2E000C6859 /* TSCustomStackView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSCustomStackView.swift; sourceTree = "<group>"; };
 		3DBEA10E2DE6A04B000C6859 /* SimpleWebViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SimpleWebViewController.h; sourceTree = "<group>"; };
 		3DBEA10F2DE6A04B000C6859 /* SimpleWebViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SimpleWebViewController.m; sourceTree = "<group>"; };
 		3DBEA1182DE6B086000C6859 /* CustomTabBarController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CustomTabBarController.h; sourceTree = "<group>"; };
@@ -348,19 +346,10 @@
 			path = TSReusableCollectionView;
 			sourceTree = "<group>";
 		};
-		3DBEA0C12DE69B2E000C6859 /* UIStackView */ = {
-			isa = PBXGroup;
-			children = (
-				3DBEA0C02DE69B2E000C6859 /* TSCustomStackView.swift */,
-			);
-			path = UIStackView;
-			sourceTree = "<group>";
-		};
 		3DBEA0C52DE69B2E000C6859 /* View */ = {
 			isa = PBXGroup;
 			children = (
 				3DBEA0B62DE69B2E000C6859 /* TSReusableCollectionView */,
-				3DBEA0C12DE69B2E000C6859 /* UIStackView */,
 			);
 			path = View;
 			sourceTree = "<group>";
@@ -1035,7 +1024,6 @@
 				3DBEA1312DE6D825000C6859 /* ASBaseCollectionCell.m in Sources */,
 				3DBEA12B2DE6BCE3000C6859 /* ASBaseNavigationController.m in Sources */,
 				3DBEA1562DE6EBAD000C6859 /* UIButton+AS.swift in Sources */,
-				3DBEA0FF2DE69B2E000C6859 /* TSCustomStackView.swift in Sources */,
 				3DBEA17E2DE703D6000C6859 /* ASDynamicContainer.swift in Sources */,
 				3DBEA1362DE6D9A3000C6859 /* ASBaseModel.swift in Sources */,
 				3DBEA14B2DE6E731000C6859 /* UIViewController+CustomAlert.m in Sources */,

+ 11 - 11
AIPlayRingtones/AppPage/APAudioToRingVC/APAudioToRingVC+StackView.swift

@@ -7,20 +7,20 @@
 
 extension APAudioToRingVC {
     
-    func creatCusStackView() -> TSCustomStackView {
-        let cusStackView = TSCustomStackView(axis: .vertical, spacing: 0)
-        cusStackView.scrollView.isScrollEnabled = true
-        return cusStackView
+    func creatDynamicContainer () -> ASDynamicContainer {
+        let container = ASDynamicContainer(orientation: .vertical)
+        container.contentScroller.isScrollEnabled = true
+        return container
     }
 
     func setUpCusStackView() {
-        cusStackView.addSubviewToStack(ASLeftHeaderView.creatTitleView(title: "Audio Files".localized),length: kSectionTitleViewH)
-        cusStackView.addSubviewToStack(fileView)
-        cusStackView.addSubviewToStack(ASLeftHeaderView.creatTitleView(title: "Ringtone Genre".localized),length: kSectionTitleViewH)
-        cusStackView.addSubviewToStack(customTextView)
-        cusStackView.addSpacing(length: 24.0)
-        cusStackView.addSubviewToStack(ringStyleView)
-        cusStackView.addSpacing(length: 84)
+        cusStackView.embedView(ASLeftHeaderView.creatTitleView(title: "Audio Files".localized),dimension: kSectionTitleViewH)
+        cusStackView.embedView(fileView)
+        cusStackView.embedView(ASLeftHeaderView.creatTitleView(title: "Ringtone Genre".localized),dimension: kSectionTitleViewH)
+        cusStackView.embedView(customTextView)
+        cusStackView.appendSpacer(24.0)
+        cusStackView.embedView(ringStyleView)
+        cusStackView.appendSpacer(84)
     }
 
 }

+ 1 - 1
AIPlayRingtones/AppPage/APAudioToRingVC/APAudioToRingVC.swift

@@ -28,7 +28,7 @@ class APAudioToRingVC: ASBaseViewController {
     
     
     //    lazy var vipBtn: UIButton = creatVipBtn()
-    lazy var cusStackView: TSCustomStackView = creatCusStackView()
+    lazy var cusStackView: ASDynamicContainer = creatDynamicContainer()
     lazy var fileView: ASRTRFileView = creatFileView()
     lazy var customTextView: ASPromptTextView = creatCustomTextView()
     lazy var ringStyleView: ASRTRStyleView = createRTRStyleView()

+ 11 - 11
AIPlayRingtones/AppPage/APRingTonesVC/APRingTonesVC/APRingTonesVC+StackView.swift

@@ -8,23 +8,23 @@
 extension APRingTonesVC {
     
     
-    func creatCusStackView() -> TSCustomStackView {
-        let cusStackView = TSCustomStackView(axis: .vertical, spacing: 0)
-        cusStackView.scrollView.isScrollEnabled = true
-        return cusStackView
+    func creatDynamicContainer() -> ASDynamicContainer {
+        let container = ASDynamicContainer(orientation: .vertical)
+        container.contentScroller.isScrollEnabled = true
+        return container
     }
     
     
     
     func setUpCusStackView() {
 
-        cusStackView.addSpacing(length: 10)
-        cusStackView.addSubviewToStack(customTextView)
-        cusStackView.addSubviewToStack(ASLeftHeaderView.creatTitleView(title: "Duration".localized),length: kSectionTitleViewH)
-        cusStackView.addSubviewToStack(secStyleView, length: 36.0)
-        cusStackView.addSubviewToStack(ASLeftHeaderView.creatTitleView(title: "Ringtone Genre".localized),length: kSectionTitleViewH)
-        cusStackView.addSubviewToStack(ringStyleVC.view)
-        cusStackView.addSpacing(length: 84)
+        cusStackView.appendSpacer(10)
+        cusStackView.embedView(customTextView)
+        cusStackView.embedView(ASLeftHeaderView.creatTitleView(title: "Duration".localized),dimension: kSectionTitleViewH)
+        cusStackView.embedView(secStyleView, dimension: 36.0)
+        cusStackView.embedView(ASLeftHeaderView.creatTitleView(title: "Ringtone Genre".localized),dimension: kSectionTitleViewH)
+        cusStackView.embedView(ringStyleVC.view)
+        cusStackView.appendSpacer(84)
     }
 
 }

+ 1 - 1
AIPlayRingtones/AppPage/APRingTonesVC/APRingTonesVC/APRingTonesVC.swift

@@ -14,7 +14,7 @@ class APRingTonesVC: ASBaseViewController {
 
 //    lazy var vipBtn: UIButton = creatVipBtn()
     lazy var navBarView: ASBaseNavContentBarView = creatNavBarView()
-    lazy var cusStackView: TSCustomStackView = creatCusStackView()
+    lazy var cusStackView: ASDynamicContainer = creatDynamicContainer()
     lazy var customTextView: ASPromptTextView = creatCustomTextView()
     lazy var secStyleView: ASGenerateDurationColView = creatDurationCollectionView()
     lazy var ringStyleVC: APRingStyleVC = creatRingStyleVC()

+ 6 - 6
AIPlayRingtones/AppPage/APSettingVC/APSettingVC.swift

@@ -20,9 +20,9 @@ class APSettingVC: ASBaseViewController {
         return navBarView
     }()
     
-    lazy var cusStackView: TSCustomStackView = {
-        let cusStackView = TSCustomStackView(axis: .vertical, spacing: 0)
-        return cusStackView
+    lazy var dynamicContainer: ASDynamicContainer = {
+        let dynamicContainer = ASDynamicContainer(orientation: .vertical)
+        return dynamicContainer
     }()
     
     private var collectionViewObserver: ASColObserver!
@@ -143,12 +143,12 @@ class APSettingVC: ASBaseViewController {
             make.edges.equalToSuperview()
         }
         
-        contentView.addSubview(cusStackView)
-        cusStackView.snp.makeConstraints { make in
+        contentView.addSubview(dynamicContainer)
+        dynamicContainer.snp.makeConstraints { make in
             make.edges.equalToSuperview()
         }
         
-        cusStackView.addSubviewToStack(collectionView,length: 0)
+        dynamicContainer.embedView(collectionView,dimension: 0)
     }
     
     override func dealThings() {

+ 0 - 132
AIPlayRingtones/Classes/View/UIStackView/TSCustomStackView.swift

@@ -1,132 +0,0 @@
-//
-//  CustomStackView.swift
-//  TestUIKit
-//
-//  Created by 100Years on 2025/2/24.
-//
-
-import UIKit
-import SnapKit
-
-open class TSCustomStackView: UIView {
-
-    public let scrollView: UIScrollView
-    public let stackView: UIStackView
-
-    public var axis: NSLayoutConstraint.Axis {
-        get {
-            return stackView.axis
-        }
-        set {
-            stackView.axis = newValue
-            updateScrollViewConstraints()
-        }
-    }
-    
-    public var spacing: CGFloat {
-        get {
-            return stackView.spacing
-        }
-        set {
-            stackView.spacing = newValue
-        }
-    }
-    
-    public var viewH:CGFloat {
-        get {
-            return scrollView.contentSize.height
-        }
-    }
-    
-    // 初始化方法
-    public init(axis: NSLayoutConstraint.Axis = .vertical,alignment:UIStackView.Alignment = .leading, spacing: CGFloat = 0) {
-        self.scrollView = UIScrollView()
-        self.scrollView.showsVerticalScrollIndicator = false
-        self.scrollView.showsHorizontalScrollIndicator = false
-        self.stackView = UIStackView()
-        self.stackView.axis = axis
-        self.stackView.spacing = spacing
-        self.stackView.alignment = alignment
-        self.stackView.distribution = .fill
-        super.init(frame: .zero)
-        setupUI()
-    }
-    
-    required public init?(coder: NSCoder) {
-        fatalError("init(coder:) has not been implemented")
-    }
-    
-    // 设置 UI
-    private func setupUI() {
-        // 添加 scrollView
-        addSubview(scrollView)
-        scrollView.snp.makeConstraints { make in
-            make.edges.equalToSuperview()
-        }
-        
-        // 添加 stackView 到 scrollView
-        scrollView.addSubview(stackView)
-        updateScrollViewConstraints()
-    }
-    
-    // 根据轴方向更新约束
-    private func updateScrollViewConstraints() {
-        stackView.snp.remakeConstraints { make in
-            make.edges.equalToSuperview()
-            
-            // 根据轴方向设置 contentSize
-            if axis == .vertical {
-                make.width.equalTo(scrollView)
-            } else {
-                make.height.equalTo(scrollView)
-            }
-        }
-    }
-    
-    // 动态添加子视图的方法
-    public func addSubviewToStack(_ view: UIView,length:CGFloat? = nil) {
-        stackView.addArrangedSubview(view)
-        view.snp.makeConstraints { make in
-            if axis == .vertical {
-                make.width.equalTo(stackView)
-                if let length = length {
-                    make.height.equalTo(length)
-                }
-            } else {
-                make.height.equalTo(stackView)
-                if let length = length {
-                    make.width.equalTo(length)
-                }
-            }
-        }
-    }
-
-    
-    public func addSpacing(length:CGFloat) {
-        let view = UIView()
-        addSubviewToStack(view)
-        view.snp.makeConstraints { make in
-            if axis == .vertical {
-                make.height.equalTo(length)
-            } else {
-                make.width.equalTo(length)
-            }
-        }
-    }
-}
-
-extension UIStackView {
-    public func addSpacing(length:CGFloat) {
-        let view = UIView()
-        self.addArrangedSubview(view)
-        view.snp.makeConstraints { make in
-            if axis == .vertical {
-                make.width.equalToSuperview()
-                make.height.equalTo(length)
-            } else {
-                make.width.equalTo(length)
-                make.height.equalToSuperview()
-            }
-        }
-    }
-}

+ 8 - 6
AIPlayRingtones/CommonView/ASDynamicContainer.swift

@@ -11,8 +11,8 @@ import SnapKit
 open class ASDynamicContainer: UIView {
     
     // MARK: - UI Components
-    private let contentScroller: UIScrollView
-    private let elementArranger: UIStackView
+    let contentScroller: UIScrollView
+    let elementArranger: UIStackView
     
     // MARK: - Configuration Properties
     public var layoutOrientation: NSLayoutConstraint.Axis {
@@ -117,16 +117,18 @@ open class ASDynamicContainer: UIView {
         }
     }
     
-    public func insertGap(_ size: CGFloat) {
+    public func appendSpacer(_ length: CGFloat) {
         let spacer = UIView()
-        embedView(spacer)
+        elementArranger.addArrangedSubview(spacer)
         
         spacer.snp.makeConstraints {
             switch layoutOrientation {
             case .vertical:
-                $0.height.equalTo(size)
+                $0.width.equalToSuperview()
+                $0.height.equalTo(length)
             case .horizontal:
-                $0.width.equalTo(size)
+                $0.width.equalTo(length)
+                $0.height.equalToSuperview()
             @unknown default:
                 break
             }

+ 2 - 2
AIPlayRingtones/CommonView/ASGeneratorView/ASGeneratorErrorView.swift

@@ -61,7 +61,7 @@ class ASGeneratorErrorView: ASBaseView {
             make.width.height.equalTo(56)
         }
         
-        cusStackView.addSpacing(length: 12.0)
+        cusStackView.appendSpacer(12.0)
         
         cusStackView.addArrangedSubview(textLabel)
         textLabel.snp.makeConstraints { make in
@@ -69,7 +69,7 @@ class ASGeneratorErrorView: ASBaseView {
             make.trailing.equalTo(-24)
         }
         
-        cusStackView.addSpacing(length: 28.0)
+        cusStackView.appendSpacer(28.0)
         
         cusStackView.addArrangedSubview(submitBtn)
         submitBtn.snp.makeConstraints { make in

+ 5 - 5
AIPlayRingtones/CommonView/ASGeneratorView/ASGeneratorLoadingView.swift

@@ -93,7 +93,7 @@ class ASGeneratorLoadingView : ASBaseView {
             make.width.height.equalTo(120)
         }
         
-        cusStackView.addSpacing(length: 12.0)
+        cusStackView.appendSpacer(12.0)
         
         cusStackView.addArrangedSubview(timeLabel)
         timeLabel.snp.makeConstraints { make in
@@ -101,7 +101,7 @@ class ASGeneratorLoadingView : ASBaseView {
             make.trailing.equalTo(-kTextLeading)
         }
         
-        cusStackView.addSpacing(length: 12.0)
+        cusStackView.appendSpacer(12.0)
         
         cusStackView.addArrangedSubview(progressView)
         progressView.snp.makeConstraints { make in
@@ -109,14 +109,14 @@ class ASGeneratorLoadingView : ASBaseView {
             make.trailing.equalTo(-40)
         }
         
-        cusStackView.addSpacing(length: 8.0)
+        cusStackView.appendSpacer(8.0)
         cusStackView.addArrangedSubview(textLabel)
         textLabel.snp.makeConstraints { make in
             make.leading.equalTo(kTextLeading)
             make.trailing.equalTo(-kTextLeading)
         }
         
-        cusStackView.addSpacing(length: 8.0)
+        cusStackView.appendSpacer(8.0)
         
         cusStackView.addArrangedSubview(infoLabel)
         infoLabel.snp.makeConstraints { make in
@@ -124,7 +124,7 @@ class ASGeneratorLoadingView : ASBaseView {
             make.trailing.equalTo(-kTextLeading)
         }
         
-        cusStackView.addSpacing(length: 20.0)
+        cusStackView.appendSpacer(20.0)
         
         cusStackView.addArrangedSubview(backgroundGenerateBtn)
         backgroundGenerateBtn.snp.makeConstraints { make in