CombineCocoa
CombineCocoa 试图为常用的 UIKit 控件提供发布者,以便您可以将用户交互作为 Combine 发射量消费,并将它们组合成有意义的、逻辑的发布者链。
注意:这仍然是这个项目的最初版本,还有更多需要改进的地方。我非常欢迎通过 PR、想法、观点或改进来提出建议。谢谢! :)
基本示例
查看 示例文件夹中的示例。在 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>
安装
CocoaPods
将以下行添加到您的 Podfile
pod 'CombineCocoa'
Swift Package Manager
将以下依赖项添加到您的 Package.swift 文件中
.package(url: "https://github.com/CombineCommunity/CombineCocoa.git", from: "0.2.1")
Carthage
将以下内容添加到您的 Cartfile
github "CombineCommunity/CombineCocoa"
未来想法
- 支持非
UIControl.Event
类型的发布者(例如代理)。 - ...您的想法? :)
感谢
- CombineCocoa深受RxSwift的RxCocoa的启发,向Krunoslav Zaher的所有杰出工作表示感谢。
- 感谢Antoine van der Lee关于创建自定义发布者的教程。在发布者内部设置控件目标的想法由此启发。
许可
当然是MIT许可;-) 请查看LICENSE文件。
苹果标志和Combine框架均归苹果公司所有。