RxSwift之环境的搭建配置与基础控件的使用
生活随笔
收集整理的這篇文章主要介紹了
RxSwift之环境的搭建配置与基础控件的使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Rx 簡介
一、什么是 Rx?
- Rx 是 Reactive X 的縮寫,簡單來說就是基于異步 Event(事件)序列的響應式編程。
- Rx 可以簡化異步編程方法,并提供更優雅的數據綁定,讓我們可以時刻響應新的數據同時順序地處理它們。
- ReactiveX(Reactive Extensions)是通過可觀察的流實現異步編程的一種API,它結合了觀察者模式、迭代器模式和函數式編程的精華。RxSwift 是 ReactiveX 編程思想的一種實現,幾乎每一種語言都會有那么一個 Rx[xxxx] 框架,比如Rxswift,RxJava,RxJS 等。
二、Rx 庫
- Rx 本身可以說是一種跨平臺的標準,它有自己的社區論壇,不管是 web 還是移動開發,都能用 Rx 的思維和方法來完成你的工作。
- 作為一種跨平臺標準,目前已經有許多基于不同開發語言的 Rx 的庫。除了 RxSwift 之外,還有 RxJava,RxJS, RxKotlin, Rx.NET等庫。
- Rx 庫雖然用的語言不同,但它們之間其實都是相通的,都有相同的 API。所以說如果以后使用別的語言做其他的方面的開發,同樣是可以使用相同的思維甚至相同的方法接口(除了語言不同)來編程。
- ReactiveX 不僅是一個編程接口,它是一種編程思想的突破,它影響了許多其它的程序庫和框架以及編程語言。它拓展了觀察者模式,能夠自由組合多個異步事件,而不需要去關心線程,同步,線程安全,并發數據以及I/O阻塞。
- RxSwift 是 Rx 為 Swift 語言開發的一門函數響應式編程語言, 它可以代替iOS系統的 Target Action / 代理 / 閉包 / 通知 / KVO,同時還提供網絡、數據綁定、UI事件處理、UI的展示和更新、多線程等。
RxSwift 的安裝與配置
一、手動安裝
- 從 Github 上下載最新的代碼;
- 將下載下來的源碼包中 Rx.xcodeproj 拖拽至工程中;
- 工程 -> General -> Embedded Binaries 項,把 iOS 版的 RxSwift.framework、RxCocoa.framework 添加進來。
二、CocoaPods 安裝
- 替換 YOUR_TARGET_NAME 然后在 Podfile 目錄下;
- 終端輸入
- 使用 RxSwift 的地方 import
- RxSwift:它只是基于 Swift 語言的 Rx 標準實現接口庫,所以 RxSwift 里不包含任何 Cocoa 或者 UI方面的類。
RxCocoa:是基于 RxSwift針對于 iOS開發的一個庫,它通過 Extension 的方法給原生的比如 UI 控件添加了 Rx 的特性,使得容易訂閱和響應這些控件的事件。
使用示例
一、UITextField
- 監聽單個 textField 內容的變化(文本響應):
- 效果展示
- 使用 change 事件效果一樣:
二、UIButton
- 實現UIButton點擊事件響應:
- 修改UIButton的Control.Events:
- 將UITextField的輸入內容綁定到UIButton屬性:
- 效果展示
三、UIScrollView
self.scrollView.rx.contentOffset.subscribe(onNext: { (content) inself.view.backgroundColor = UIColor.init(red: content.y / 255.0 * 0.4, green: content.y / 255.0 * 0.6, blue: content.y / 255.0 * 0.8, alpha: 1)}).disposed(by: disposeBag)四、手勢
let gesture = UITapGestureRecognizer()self.label.isUserInteractionEnabled = trueself.label.addGestureRecognizer(gesture)gesture.rx.event.subscribe(onNext: { (tap) inprint(tap.view as Any)}).disposed(by: disposeBag)五、通知
NotificationCenter.default.rx.notification(UIResponder.keyboardDidShowNotification).subscribe(onNext: { (notification) inprint(notification)}).disposed(by: disposeBag)六、KVO
self.boy.rx.observeWeakly(String.self, "name").subscribe(onNext: { (value) inprint(value as Any)}).disposed(by: disposeBag)override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {self.boy.name = "girl"print(self.boy.name)}七、NSTimer
- 避免了實現定時器的runloop影響、銷毀問題、線程問題;
八、URLSession 網絡請求
URLSession.shared.rx.response(request: URLRequest.init(url: URL.init(string: "https://www.baidu.com")!)).subscribe(onNext: { (response, data) inprint(response)}).disposed(by: disposeBag)九、UITextView
UITextView有如下委托回調方法:
- didBeginEditing:開始編輯
- didEndEditing:結束編輯
- didChange:編輯內容發生改變
- didChangeSelection:選中部分發生變化
完整示例
RxSwift基礎使用
總結
以上是生活随笔為你收集整理的RxSwift之环境的搭建配置与基础控件的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Swift之捕捉侧滑返回事件并跳转指定控
- 下一篇: iOS之深入解析Objective-C和