RxSwift
是ReactiveCocoa
的swift版本,是一种函数式响应编程的框架。RxSwift
遵循Functional Reactive Programming(FRP)
的设计规范,其目的是通过类似于信号流或者观察者的方式来实现代码的逻辑运算,使代码更加的简洁、明了。
第一次用RxSwift
你会感觉和OC版本的ReactiveCocoa
有很大的区别,基本上改了个底朝天。
先上代码,可以自行下载
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代码.