当使用 Xcode 项目时
当使用 Swift Package Manager 清单时
选择一个 package 版本
0.4.1
main
用于 UIKit 的 Combine 发布者桥接
CombineCocoa 旨在为常见的 UIKit 控件提供 Publisher,以便您可以将用户交互作为 Combine 事件流来使用,并将它们组合成有意义的、逻辑的 Publisher 链。
注意: 这仍然是它的初始版本,还有很多需要改进的地方。 我很乐意接受 PR、想法、意见或改进建议。 谢谢! :)
查看 Example 文件夹中的示例。 在 Xcode 11 中打开项目,Swift Package Manager 应该会自动解析所需的依赖项。
长话短说
import Combine
import CombineCocoa
textField.textPublisher // AnyPublisher<String, Never>
segmented.selectedSegmentIndexPublisher // AnyPublisher<Int, Never>
slider.valuePublisher // AnyPublisher<Float, Never>
button.tapPublisher // AnyPublisher<Void, Never>
barButtonItem.tapPublisher // AnyPublisher<Void, Never>
switch.isOnPublisher // AnyPublisher<Bool, Never>
stepper.valuePublisher // AnyPublisher<Double, Never>
datePicker.datePublisher // AnyPublisher<Date, Never>
refreshControl.isRefreshingPublisher // AnyPublisher<Bool, Never>
pageControl.currentPagePublisher // AnyPublisher<Int, Never>
tapGesture.tapPublisher // AnyPublisher<UITapGestureRecognizer, Never>
pinchGesture.pinchPublisher // AnyPublisher<UIPinchGestureRecognizer, Never>
rotationGesture.rotationPublisher // AnyPublisher<UIRotationGestureRecognizer, Never>
swipeGesture.swipePublisher // AnyPublisher<UISwipeGestureRecognizer, Never>
panGesture.panPublisher // AnyPublisher<UIPanGestureRecognizer, Never>
screenEdgePanGesture.screenEdgePanPublisher // AnyPublisher<UIScreenEdgePanGestureRecognizer, Never>
longPressGesture.longPressPublisher // AnyPublisher<UILongPressGestureRecognizer, Never>
scrollView.contentOffsetPublisher // AnyPublisher<CGPoint, Never>
scrollView.reachedBottomPublisher(offset:) // AnyPublisher<Void, Never>
将以下行添加到您的 Podfile 中
pod 'CombineCocoa'
将以下依赖项添加到您的 Package.swift 文件中
.package(url: "https://github.com/CombineCommunity/CombineCocoa.git", from: "0.2.1")
将以下内容添加到您的 Cartfile 中
github "CombineCommunity/CombineCocoa"
- 支持非
UIControl.Event
-based Publisher(例如,委托)。 - ... 您的想法? :)
- CombineCocoa 的本质深受 RxSwift 的 RxCocoa 的启发,感谢 Krunoslav Zaher 为此所做的所有出色工作。
- 感谢 Antoine van der Lee 撰写的关于 创建自定义 Publisher 的教程。 在 Publisher 内部设置控件 target 的想法受到了它的启发。
当然是 MIT ;-) 请参阅 LICENSE 文件。
Apple 徽标和 Combine 框架是 Apple Inc. 的财产。