VerticalCardSwiper 项目教程
1. 项目的目录结构及介绍
VerticalCardSwiper 项目的目录结构如下:
VerticalCardSwiper/
├── Example/
│ ├── Sources/
│ ├── UITests/
│ └── VerticalCardSwiper.xcodeproj
├── Sources/
│ ├── VerticalCardSwiper
│ └── VerticalCardSwiper.swift
├── .gitignore
├── .swiftlint.yml
├── CHANGELOG.md
├── LICENSE
├── Package.swift
├── README.md
├── VerticalCardSwiper.podspec
└── example.gif
目录介绍:
- Example/: 包含项目的示例代码和测试。
- Sources/: 示例代码的源文件。
- UITests/: 示例代码的UI测试。
- VerticalCardSwiper.xcodeproj: 示例项目的 Xcode 工程文件。
- Sources/: 项目的主要源代码。
- VerticalCardSwiper: 主要功能实现文件。
- VerticalCardSwiper.swift: 主要功能实现文件。
- .gitignore: Git 忽略文件配置。
- .swiftlint.yml: SwiftLint 配置文件。
- CHANGELOG.md: 项目更新日志。
- LICENSE: 项目许可证。
- Package.swift: Swift 包管理文件。
- README.md: 项目说明文档。
- VerticalCardSwiper.podspec: CocoaPods 配置文件。
- example.gif: 示例动画。
2. 项目的启动文件介绍
项目的启动文件主要是 Example/Sources/ExampleViewController.swift
和 Example/Sources/ViewController.swift
。
ExampleViewController.swift
import VerticalCardSwiper
class ExampleViewController: UIViewController, VerticalCardSwiperDatasource {
private var cardSwiper: VerticalCardSwiper!
override func viewDidLoad() {
super.viewDidLoad()
cardSwiper = VerticalCardSwiper(frame: self.view.bounds)
self.view.addSubview(cardSwiper)
cardSwiper.datasource = self
cardSwiper.register(nib: UINib(nibName: "ExampleCell", bundle: nil), forCellWithReuseIdentifier: "ExampleCell")
}
func cardForItemAt(verticalCardSwiperView: VerticalCardSwiperView, cardForItemAt index: Int) -> CardCell {
if let cardCell = verticalCardSwiperView.dequeueReusableCell(withReuseIdentifier: "ExampleCell", for: index) as? ExampleCardCell {
return cardCell
}
return CardCell()
}
func numberOfCards(verticalCardSwiperView: VerticalCardSwiperView) -> Int {
return 100
}
}
ViewController.swift
import VerticalCardSwiper
class ViewController: UIViewController, VerticalCardSwiperDelegate {
override func viewDidLoad() {
super.viewDidLoad()
cardSwiper.delegate = self
}
func willSwipeCardAway(card: CardCell, index: Int, swipeDirection: SwipeDirection) {
// called right before the card animates off the screen (optional)
}
func didSwipeCardAway(card: CardCell, index: Int, swipeDirection: SwipeDirection) {
// handle swipe gestures (optional)
}
func didCancelSwipe(card: CardCell, index: Int) {
// Called when a card swipe is cancelled (when the threshold wasn't reached)
}
func sizeForItem(verticalCardSwiperView: VerticalCardSwiperView, index: Int) -> CGSize {
// Allows you to return custom card sizes (optional)
return CGSize(width: verticalCardSwiperView.frame.width * 0.75, height: verticalCardSwiperView.frame.height * 0.75)
}
}
3. 项目的配置文件介绍
.swiftlint.yml
SwiftLint 配置文件,用于代码风格和规范检查。
disabled_rules: # rule identifiers to exclude from running
- trailing_whitespace
- line_length
opt_in_rules: # some rules