Shuffle-iOS 0.5.0

Shuffle-iOS 0.5.0

Mac Gallagher 维护。



  • 作者
  • Mac Gallagher


Platform Swift Version Build Status Swift Package Manager CocoaPods Carthage Code Coverage LICENSE

使用❤️Mac Gallagher 完成

特性

💡基于速度和卡片位置的先进滑动识别

💡手动和程序化动作

💡平滑的卡片叠加视图过渡

💡流畅且可定制的动画

💡使用数据源模式进行动态卡片加载

示例

要运行示例项目,克隆仓库并运行 ShuffleExample 目标。

基本用法

  1. 通过子类化 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:) 返回的卡片显示一个图像,可以左右滑动,并且在两个方向都有叠加视图。

  2. 初始化卡片数据,并在您的视图中放置 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
      }
    }
  3. 使您的类符合 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
  4. 符合 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)

    注意didSwipeCardAtdidSwipeAllCards 不论卡片是否通过编程方式或由用户滑动都会被调用。

卡堆操作

以下方法可在 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 的应用 - 欢迎提交拉取请求并在此分享您的应用!


使用❤️Mac Gallagher 完成