??RxSwift
是ReactiveCocoa
的swift版本,是一種函數(shù)式響應(yīng)編程的框架。RxSwift
遵循Functional Reactive Programming(FRP)
的設(shè)計(jì)規(guī)范,其目的是通過(guò)類似于信號(hào)流或者觀察者的方式來(lái)實(shí)現(xiàn)代碼的邏輯運(yùn)算,使代碼更加的簡(jiǎn)潔、明了。
??第一次用RxSwift
你會(huì)感覺(jué)和OC版本的ReactiveCocoa
有很大的區(qū)別,基本上改了個(gè)底朝天。
先上代碼,可以自行下載
github代碼.
注意:
當(dāng)你使用RxSwift的時(shí)候有時(shí)候沒(méi)有代碼提示,這個(gè)時(shí)候你要校驗(yàn)一下使用的對(duì)象,否則就敲后面方法的時(shí)候就沒(méi)有提示。是不是很蛋疼?比如:
// 校驗(yàn)是為了后面有代碼提示
guard let button1 = button1 else {
print("Error")
return
}
button1.rx.tap.subscribe{ (even : Event<()>) in
print("你點(diǎn)擊了按鈕")
}.disposed(by: bag)
UI控件的簡(jiǎn)單用法
-
1、UIButton
guard let button1 = button1 else { //校驗(yàn)是為了后面有代碼提示
print("Error")
return
}
button1.rx.tap.subscribe{ (even : Event<()>) in
print("你點(diǎn)擊了按鈕")
}.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校驗(yàn)為了后面有代碼提示
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常見(jiàn)用
[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代碼.