|
@@ -5,24 +5,22 @@
|
|
// Created by 100Years on 2025/7/28.
|
|
// Created by 100Years on 2025/7/28.
|
|
//
|
|
//
|
|
|
|
|
|
|
|
+import IQKeyboardCore
|
|
import JXSegmentedView
|
|
import JXSegmentedView
|
|
|
|
|
|
let segmentedBgColor: UIColor = "#292929".uiColor
|
|
let segmentedBgColor: UIColor = "#292929".uiColor
|
|
|
|
|
|
class TSAIDiyVideoVC: TSBaseVC {
|
|
class TSAIDiyVideoVC: TSBaseVC {
|
|
-
|
|
|
|
- var diyVideoType:Int = 0 //0 图生视频,1 文生视频
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- //选择生成的视频参数模型
|
|
|
|
- var selectedGenerateModel:TSAIDiyVideoGenerateModel?{
|
|
|
|
-
|
|
|
|
- if let vc = viewControllers[segmentedView.selectedIndex] as? TSAIDiyVideoTTBaseVC{
|
|
|
|
|
|
+ var diyVideoType: Int = 0 // 0 图生视频,1 文生视频
|
|
|
|
+
|
|
|
|
+ // 选择生成的视频参数模型
|
|
|
|
+ var selectedGenerateModel: TSAIDiyVideoGenerateModel? {
|
|
|
|
+ if let vc = viewControllers[segmentedView.selectedIndex] as? TSAIDiyVideoTTBaseVC {
|
|
return vc.videoGenerateModel
|
|
return vc.videoGenerateModel
|
|
}
|
|
}
|
|
return nil
|
|
return nil
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
lazy var listContainerView: JXSegmentedListContainerView = {
|
|
lazy var listContainerView: JXSegmentedListContainerView = {
|
|
let listContainerView = JXSegmentedListContainerView(dataSource: self)
|
|
let listContainerView = JXSegmentedListContainerView(dataSource: self)
|
|
listContainerView.frame = CGRect(x: 0, y: 48, width: UIScreen.main.bounds.size.width, height: k_ScreenHeight - k_Nav_Height - 48)
|
|
listContainerView.frame = CGRect(x: 0, y: 48, width: UIScreen.main.bounds.size.width, height: k_ScreenHeight - k_Nav_Height - 48)
|
|
@@ -36,7 +34,7 @@ class TSAIDiyVideoVC: TSBaseVC {
|
|
dataSource.itemSpacing = 0
|
|
dataSource.itemSpacing = 0
|
|
dataSource.itemWidth = itemWidth
|
|
dataSource.itemWidth = itemWidth
|
|
dataSource.itemWidthIncrement = 0
|
|
dataSource.itemWidthIncrement = 0
|
|
- dataSource.titles = ["Image to Video".localized,"Text to Video".localized]
|
|
|
|
|
|
+ dataSource.titles = ["Image to Video".localized, "Text to Video".localized]
|
|
dataSource.titleNormalColor = .white.withAlphaComponent(0.8)
|
|
dataSource.titleNormalColor = .white.withAlphaComponent(0.8)
|
|
dataSource.titleSelectedColor = "#111111".uiColor
|
|
dataSource.titleSelectedColor = "#111111".uiColor
|
|
dataSource.titleNormalFont = .font(size: 12.0)
|
|
dataSource.titleNormalFont = .font(size: 12.0)
|
|
@@ -44,10 +42,10 @@ class TSAIDiyVideoVC: TSBaseVC {
|
|
return dataSource
|
|
return dataSource
|
|
}()
|
|
}()
|
|
|
|
|
|
- lazy var itemWidth:CGFloat = (UIScreen.main.bounds.size.width-32)/2.0
|
|
|
|
|
|
+ lazy var itemWidth: CGFloat = (UIScreen.main.bounds.size.width - 32) / 2.0
|
|
lazy var indicator: JXSegmentedIndicatorBackgroundView = {
|
|
lazy var indicator: JXSegmentedIndicatorBackgroundView = {
|
|
let indicator = JXSegmentedIndicatorBackgroundView()
|
|
let indicator = JXSegmentedIndicatorBackgroundView()
|
|
- indicator.indicatorWidth = itemWidth-4
|
|
|
|
|
|
+ indicator.indicatorWidth = itemWidth - 4
|
|
indicator.indicatorWidthIncrement = 0
|
|
indicator.indicatorWidthIncrement = 0
|
|
indicator.indicatorHeight = 36
|
|
indicator.indicatorHeight = 36
|
|
indicator.indicatorColor = .themeColor
|
|
indicator.indicatorColor = .themeColor
|
|
@@ -57,13 +55,14 @@ class TSAIDiyVideoVC: TSBaseVC {
|
|
}()
|
|
}()
|
|
|
|
|
|
lazy var segmentedView: JXSegmentedView = {
|
|
lazy var segmentedView: JXSegmentedView = {
|
|
- let segmentedView = JXSegmentedView(frame: CGRect(x: 16, y:8, width: UIScreen.main.bounds.size.width-32, height: 40.0))
|
|
|
|
|
|
+ let segmentedView = JXSegmentedView(frame: CGRect(x: 16, y: 8, width: UIScreen.main.bounds.size.width - 32, height: 40.0))
|
|
segmentedView.delegate = self
|
|
segmentedView.delegate = self
|
|
segmentedView.indicators = [indicator]
|
|
segmentedView.indicators = [indicator]
|
|
segmentedView.dataSource = segmentedDataSource
|
|
segmentedView.dataSource = segmentedDataSource
|
|
segmentedView.backgroundColor = segmentedBgColor
|
|
segmentedView.backgroundColor = segmentedBgColor
|
|
segmentedView.listContainer = listContainerView
|
|
segmentedView.listContainer = listContainerView
|
|
segmentedView.cornerRadius = 20
|
|
segmentedView.cornerRadius = 20
|
|
|
|
+ segmentedView.defaultSelectedIndex = diyVideoType
|
|
return segmentedView
|
|
return segmentedView
|
|
}()
|
|
}()
|
|
|
|
|
|
@@ -99,12 +98,7 @@ class TSAIDiyVideoVC: TSBaseVC {
|
|
init(diyVideoType: Int) {
|
|
init(diyVideoType: Int) {
|
|
self.diyVideoType = diyVideoType
|
|
self.diyVideoType = diyVideoType
|
|
super.init()
|
|
super.init()
|
|
-
|
|
|
|
- DispatchQueue.main.asyncAfter(deadline: .now() + 0.4) {
|
|
|
|
- self.segmentedView.selectItemAt(index: diyVideoType)
|
|
|
|
- }
|
|
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
|
|
@MainActor required init?(coder: NSCoder) {
|
|
@MainActor required init?(coder: NSCoder) {
|
|
fatalError("init(coder:) has not been implemented")
|
|
fatalError("init(coder:) has not been implemented")
|
|
@@ -140,7 +134,7 @@ class TSAIDiyVideoVC: TSBaseVC {
|
|
creatBtnView.setBtnEnabled(isEnabled: finish)
|
|
creatBtnView.setBtnEnabled(isEnabled: finish)
|
|
}
|
|
}
|
|
}.store(in: &cancellable)
|
|
}.store(in: &cancellable)
|
|
-
|
|
|
|
|
|
+
|
|
ttvVc.viewModel.$didFinishEdit.receive(on: DispatchQueue.main).sink { [weak self] finish in
|
|
ttvVc.viewModel.$didFinishEdit.receive(on: DispatchQueue.main).sink { [weak self] finish in
|
|
guard let self = self else {
|
|
guard let self = self else {
|
|
return
|
|
return
|
|
@@ -165,7 +159,7 @@ extension TSAIDiyVideoVC: JXSegmentedViewDelegate {
|
|
func segmentedView(_ segmentedView: JXSegmentedView, didSelectedItemAt index: Int) {
|
|
func segmentedView(_ segmentedView: JXSegmentedView, didSelectedItemAt index: Int) {
|
|
if segmentedView.selectedIndex == 0 {
|
|
if segmentedView.selectedIndex == 0 {
|
|
creatBtnView.setBtnEnabled(isEnabled: ptvVc.viewModel.didFinishEdit)
|
|
creatBtnView.setBtnEnabled(isEnabled: ptvVc.viewModel.didFinishEdit)
|
|
- }else{
|
|
|
|
|
|
+ } else {
|
|
creatBtnView.setBtnEnabled(isEnabled: ttvVc.viewModel.didFinishEdit)
|
|
creatBtnView.setBtnEnabled(isEnabled: ttvVc.viewModel.didFinishEdit)
|
|
}
|
|
}
|
|
navigationController?.interactivePopGestureRecognizer?.isEnabled = (index == 0)
|
|
navigationController?.interactivePopGestureRecognizer?.isEnabled = (index == 0)
|
|
@@ -197,7 +191,6 @@ extension TSAIDiyVideoVC {
|
|
|
|
|
|
kPresentModalVC(target: self, modelVC: gennerateVC, transitionStyle: .crossDissolve)
|
|
kPresentModalVC(target: self, modelVC: gennerateVC, transitionStyle: .crossDissolve)
|
|
} else {
|
|
} else {
|
|
-
|
|
|
|
let generatorModel = TSAIGeneratorModel(upLoadImage: .init(), generatorStyle: .textToVideo)
|
|
let generatorModel = TSAIGeneratorModel(upLoadImage: .init(), generatorStyle: .textToVideo)
|
|
generatorModel.diyVideoGenerateModel = selectedGenerateModel
|
|
generatorModel.diyVideoGenerateModel = selectedGenerateModel
|
|
let gennerateVC = TSAIGenerateVC(generatorModel: generatorModel) { [weak self] _ in
|
|
let gennerateVC = TSAIGenerateVC(generatorModel: generatorModel) { [weak self] _ in
|