使用
特性
示例
要运行示例项目,克隆仓库并运行 ShuffleExample
目标。
基本用法
-
通过子类化
SwipeCard
或直接设置其属性来创建自己的卡片func card(fromImage image: UIImage) -> SwipeCard { let card = SwipeCard() card.swipeDirections = [.left, .right] card.content = UIImageView(image: image) let leftOverlay = UIView() leftoverlay.backgroundColor = .green let rightOverlay = UIView() rightOverlay.backgroundColor = .red card.setOverlays([.left: leftOverlay, .right: rightOverlay]) return card }
card(fromImage:)
返回的卡片显示一个图像,可以左右滑动,并且在两个方向都有叠加视图。 -
初始化卡片数据,并在您的视图中放置
SwipeCardStack
class ViewController: UIViewController { let cardStack = SwipeCardStack() let cardImages = [ UIImage(named: "cardImage1"), UIImage(named: "cardImage2"), UIImage(named: "cardImage3") ] override func viewDidLoad() { super.viewDidLoad() view.addSubview(cardStack) cardStack.frame = view.safeAreaLayoutGuide.layoutFrame } }
-
使您的类符合
SwipeCardStackDataSource
并设置卡片栈的dataSource
func cardStack(_ cardStack: SwipeCardStack, cardForIndexAt index: Int) -> SwipeCard { return card(fromImage: cardImages[index]) } func numberOfCards(in cardStack: SwipeCardStack) -> Int { return cardImages.count }
cardStack.dataSource = self
-
符合
SwipeCardStackDelegate
以订阅以下事件之一func cardStack(_ cardStack: SwipeCardStack, didSelectCardAt index: Int) func cardStack(_ cardStack: SwipeCardStack, didSwipeCardAt index: Int, with direction: SwipeDirection) func cardStack(_ cardStack: SwipeCardStack, didUndoCardAt index: Int, from direction: SwipeDirection) func didSwipeAllCards(_ cardStack: SwipeCardStack)
注意:
didSwipeCardAt
和didSwipeAllCards
不论卡片是否通过编程方式或由用户滑动都会被调用。
卡堆操作
以下方法可在 SwipeCardStack
上使用。
滑动
在指定的方向上以编程方式执行滑动。
func swipe(_ direction: SwipeDirection, animated: Bool)
移动
通过给定距离移动卡堆的卡片。任何已滑动的卡片都会被跳过。
func shift(withDistance distance: Int = 1, animated: Bool)
撤销
将最后滑动的卡片返回到卡堆的顶部。
func undoLastSwipe(animated: Bool)
卡片布局
每个 SwipeCard
包含三个 UI 组件:其 内容、页脚 和 覆盖层(可选)。
内容
内容是卡片的主体视图。您可以在其中包含自己的卡片模板。
var content: UIView? { get set }
页脚
页脚是卡片底部的辅助视图。如果页脚是透明的,它将在视图层次结构中位于内容之上。否则,页脚绘制在内容下方。
var footer: UIView? { get set }
var footerHeight: CGFloat { get set }
覆盖层
覆盖层是一种用户拖动时调整透明度的视图。如果页脚是透明的或不是透明的,覆盖层都将位于页脚之上。
func overlay(forDirection direction: SwipeDirection) -> UIView?
func setOverlay(_ overlay: UIView?, forDirection direction: SwipeDirection)
func setOverlays(_ overlays: [SwipeDirection: UIView])
高级用法
包括更高级的用法,例如:
请访问以下文档这里。
安装
CocoaPods
Shuffle 通过 CocoaPods 提供。要安装它,请简单地将以下行添加到您的 Podfile
pod 'Shuffle-iOS'
Carthage
Shuffle 通过 Carthage 提供。要安装它,请简单地添加以下行到您的 Cartfile
github "mac-gallagher/Shuffle"
Swift Package Manager
Shuffle 通过 Swift PM 提供。要安装它,只需在 Package.swift
中将其作为依赖项添加。
dependencies: [
.package(url: "https://github.com/mac-gallagher/Shuffle.git", from: "0.1.0"),
]
手动安装
下载并将 Shuffle
目录拖入您的项目中。
需求
- iOS 9.0+
- Xcode 10.2+
- Swift 5.0+
使用 Shuffle 的应用
我们很乐意了解使用 Shuffle 的应用 - 欢迎提交拉取请求并在此分享您的应用!
使用