Display Switcher
此组件实现了两个集合视图布局之间的自定义转换,具有自定义动画持续时间。
查看此 dribbble 上的项目。
同时,在 我们的博客 中了解其制作过程。
需求
- iOS 10.0+
- Xcode 11
- Swift 5
安装
CocoaPods
use_frameworks!
pod ‘DisplaySwitcher’, '~> 2.0’
Carthage
github "Yalantis/DisplaySwitcher" "master"
使用方法
首先,导入DisplaySwitcher
import DisplaySwitcher
然后创建两个布局(列表模式和网格模式)
private lazy var listLayout = DisplaySwitchLayout(staticCellHeight: listLayoutStaticCellHeight, nextLayoutStaticCellHeight: gridLayoutStaticCellHeight, layoutState: .list)
private lazy var gridLayout = DisplaySwitchLayout(staticCellHeight: gridLayoutStaticCellHeight, nextLayoutStaticCellHeight: listLayoutStaticCellHeight, layoutState: .grid)
设置当前布局
private var layoutState: LayoutState = .list
collectionView.collectionViewLayout = listLayout
然后重写两个UICollectionViewDataSource方法
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
// count of items
}
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
// configure your custom cell
}
并且重写一个UICollectionViewDelegate方法(用于自定义布局过渡)
func collectionView(collectionView: UICollectionView, transitionLayoutForOldLayout fromLayout: UICollectionViewLayout, newLayout toLayout: UICollectionViewLayout) -> UICollectionViewTransitionLayout {
let customTransitionLayout = TransitionLayout(currentLayout: fromLayout, nextLayout: toLayout)
return customTransitionLayout
}
最后创建必要的过渡并启动它(您可以简单地更改过渡布局和旋转按钮的动画持续时间)
let transitionManager: TransitionManager
if layoutState == .list {
layoutState = .grid
transitionManager = TransitionManager(duration: animationDuration, collectionView: collectionView!, destinationLayout: gridLayout, layoutState: layoutState)
} else {
layoutState = .list
transitionManager = TransitionManager(duration: animationDuration, collectionView: collectionView!, destinationLayout: listLayout, layoutState: layoutState)
}
transitionManager.startInteractiveTransition()
rotationButton.selected = layoutState == .list
rotationButton.animationDuration = animationDuration
祝您玩得开心! :)
让我们知道!
如果您共享您使用我们组件的项目链接,我们会非常高兴。只需发送电子邮件到[email protected],并且如果您对动画有任何疑问或建议,请告诉我们。
附言。我们将发布更多令人惊叹的代码包装,并发布关于如何制作优于iOS(Android)UI的教程。敬请关注!
许可证
MIT许可(MIT)
版权所有 © 2017 Yalantis
任何得到本软件及相关文档副本的人(“软件”)都可以免费使用该软件,不受限制地处理该软件,包括但不限于使用、复制、修改、合并、出版、分发、再许可和/或销售软件副本,并允许向提供软件的个人提供这样做,但需遵守以下条件
上述版权声明和许可声明应包含在软件的所有副本或实质性部分中。
本软件按“现状”提供,不提供任何类型的保证,明示或暗示,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权持有者不对任何索赔、损害或其他责任承担责任,无论因合同行为、侵权行为或其他行为而引起,包括与软件或其使用或其他行为有关的索赔、损害或其他责任。