我正在學習為集合視圖設定影片,目前使用CollectionViewPagingLayout 模板。
我不僅想在集合視圖中使用滑動進行導航,還想使用按鈕。這個想法是滑動影片與按鈕影片不同。
所以重點是 - 如何為一個集合視圖配置兩種不同的影片?
一個選擇的影片效果很好:在 viewDidLoad 我宣告選擇的模板:
override func viewDidLoad() {
super.viewDidLoad()
let layout = CollectionViewPagingLayout()
collectionView.collectionViewLayout = layout
collectionView.isPagingEnabled = true
layout.numberOfVisibleItems = nil
}
然后有兩個按鈕,其作用與左右滑動相同。
在課程結束后,我創建了一個帶有一些影片的擴展,例如:
extension TargetCollectionViewCell: ScaleTransformView {
var scaleOptionsDetailed: ScaleTransformViewOptions {
return ScaleTransformViewOptions(
minScale: 0.6,
scaleRatio: 0.4,
translationRatio: CGPoint(x: 0.66, y: 0.2),
maxTranslationRatio: CGPoint(x: 2, y: 0)
)
}
}
但我不明白如何設定第二個影片 - 然后如何呼叫它。我想要的結果示例如下:對于滑動操作,擴展中的minScale引數應該是 0.6。當我單擊右/左按鈕時 minScale引數應該是0.9。
模板作者提供的自述檔案很詳細 - 但我沒有在那里找到線索。我想,某種功能可能會有所幫助 - 或其他擴展。但是我嘗試并完全無法弄清楚如何撰寫該方法。
非常感謝您對此提供的幫助。
uj5u.com熱心網友回復:
最終,我設法自己做到了。如果它對任何人都有用 - 可能的解決方案之一如下:
首先,創建一種影片,例如var animationType = 1.
然后,在擴展中,提出一些情況:
extension TargetCollectionViewCell: ScaleTransformView {
var scaleOptions: ScaleTransformViewOptions {
if animationType == 1 {
return ScaleTransformViewOptions(
minScale: 0.01,
maxScale: 0.01,
scaleRatio: 0,
translationRatio: .zero,
minTranslationRatio: .zero,
maxTranslationRatio: .zero,
shadowEnabled: false,
rotation3d: .init(angle: 0.8, minAngle: -90, maxAngle: 90, x: 0, y: 1, z: 0, m34: -0.001),
translation3d: .init(translateRatios: (0, -1, 0), minTranslateRatios: (0, 0, 1.25), maxTranslateRatios: (0, 0, 1.25)))
} else if animationType == 2 {
return ScaleTransformViewOptions(
minScale: 0.04,
maxScale: 0.04,
scaleRatio: 0,
translationRatio: .zero,
minTranslationRatio: .zero,
maxTranslationRatio: .zero,
shadowEnabled: false,
rotation3d: .init(angle: 0.8, minAngle: -90, maxAngle: 90, x: 0, y: 1, z: 0, m34: -0.001),
translation3d: .init(translateRatios: (0, -1, 0), minTranslateRatios: (0, 0, 1.25), maxTranslateRatios: (0, 0, 1.25)))
} else {
return ScaleTransformViewOptions(
minScale: 0.07,
maxScale: 0.07,
scaleRatio: 0,
translationRatio: .zero,
minTranslationRatio: .zero,
maxTranslationRatio: .zero,
shadowEnabled: false,
rotation3d: .init(angle: 0.8, minAngle: -90, maxAngle: 90, x: 0, y: 1, z: 0, m34: -0.001),
translation3d: .init(translateRatios: (0, -1, 0), minTranslateRatios: (0, 0, 1.25), maxTranslateRatios: (0, 0, 1.25)))
}
return ScaleTransformViewOptions(
)
}
}
在我的示例中,唯一改變的是 minScale/maxScale 引數 - 當然,所有其他選項都可以更改為。
最后一件事 - 向右/左按鈕添加一行代碼,因此它會更改影片型別。因此,對于左按鈕,您添加:
@IBAction func swipeLeftButton(_ sender: Any) {
...
animationType = 1
}
而不是......你放一個代碼,描述按鈕的基本功能。就我而言 - 這是一個向左滑動的命令。
希望對某人有所幫助。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/475591.html
標籤:迅速 代码 动画片 uicollectionview uicollectionview布局
上一篇:如何通過xcodegenswift將檔案.a添加到專案中
下一篇:事實失敗后添加的未更改測驗目標
