??RxSwift是ReactiveCocoa 的swift版本,是一種函數(shù)式響應編程的框架。RxSwift遵循Functional Reactive Programming(FRP)的設(shè)計規(guī)范,其目的是通過類似于信號流或者觀察者的方式來實現(xiàn)代碼的邏輯運算,使代碼更加的簡潔、明了。
??第一次用RxSwift你會感覺和OC版本的ReactiveCocoa有很大的區(qū)別,基本上改了個底朝天。
先上代碼,可以自行下載
github代碼.
注意:
當你使用RxSwift的時候有時候沒有代碼提示,這個時候你要校驗一下使用的對象,否則就敲后面方法的時候就沒有提示。是不是很蛋疼?比如:
// 校驗是為了后面有代碼提示
guard let button1 = button1 else {
print("Error")
return
}
button1.rx.tap.subscribe{ (even : Event<()>) in
print("你點擊了按鈕")
}.disposed(by: bag)
UI控件的簡單用法
-
1、UIButton
guard let button1 = button1 else { //校驗是為了后面有代碼提示
print("Error")
return
}
button1.rx.tap.subscribe{ (even : Event<()>) in
print("你點擊了按鈕")
}.disposed(by: bag)
-
2、UITextField
tf.rx.text.subscribe { (even : Event<String?>) in
print(even.element!!)
self.label.text = even.element!
}.disposed(by: bag)
tf.rx.text.subscribe(onNext: { (str : String?) in
print("str: \(str ?? "")")
self.label.text = str ?? ""
}).disposed(by: bag)
if let tf = tf { // if校驗為了后面有代碼提示
tf.rx.text.bind(to: label.rx.text).disposed(by: bag)
}
-
3、UILabel
label.rx.observe(String.self, "text").subscribe(onNext:
{ (string) in
print("s--\(string!)")
/*
2017-12-27 16:51:06.102420+0800 RxSwift常見用
[16431:2762994] [MC] Reading from private effective
user settings.
s--1
s--11
s--111
s--1111
s--11111
*/
}).disposed(by: bag)
-
4、UIScrollView
scrollView.contentSize = CGSize(width: 1000, height: 1100)
scrollView.rx.contentOffset.subscribe(onNext: { (poit) in
print("poit== \(poit.x)")
}).disposed(by: bag)
github代碼.