RxSwift簡介
- ReactiveX(簡寫:Rx 全寫:Reactive Extension)是一個(gè)可以幫助我們簡化異步編程的框架
- RxSwift是Rx系中的Swift版本
- RxSwift是函數(shù)響應(yīng)式(FRP)框架,與Swift語法特性相結(jié)合,簡直不要太NB!
函數(shù)式:形如數(shù)學(xué)中的y=f(x),其中f為函數(shù),自變量x又可以為一個(gè)函數(shù)表達(dá)式f(x),即y=f(f(x))
響應(yīng)式:舉個(gè)例子,就是哥哥上二年紀(jì),弟弟一年級,等哥哥三年紀(jì)的時(shí)候,弟弟也會(huì)變成二年級,哥哥的變化也會(huì)伴隨著弟弟的變化,大概就是這個(gè)意思吧
RxSwift API初體驗(yàn)
Button的使用
func learButton() {
button.addTarget(self, action: #selector(buttonAction), for: .touchUpInside)
button.rx.tap
.subscribe(onNext: { [weak self] in
print("點(diǎn)擊了button")
self?.button.backgroundColor = UIColor.blue
})
.disposed(by: disposeBag)
}
TestField的使用
func learTextField() {
textField.rx.text.orEmpty.changed.subscribe(onNext: { (text) in
print(text)
}).disposed(by: disposeBag)
textField.rx.text.bind(to: button.rx.title()).disposed(by: disposeBag)
}
ScrollView的使用
func learnScroll() {
scrollView.rx.contentOffset
.subscribe(onNext: { (point) in
print(point)
})
.disposed(by: disposeBag)
}
KVO的使用
func learKVO() {
self.personal.rx.observeWeakly(String.self, "name")
.subscribe(onNext: { (value) in
print(value!)
})
.disposed(by: disposeBag)
}
Notification的使用
func learNotification() {
NotificationCenter.default.rx.notification(UIResponder.keyboardWillShowNotification)
.subscribe(onNext: { (event) in
print(event)
})
.disposed(by: disposeBag)
}
GestureRecognizer的使用
func learGestureRecognizer() {
let tap = UITapGestureRecognizer()
lab.isUserInteractionEnabled = true
lab.addGestureRecognizer(tap)
tap.rx.event.subscribe {
(event) in
print("點(diǎn)了lab")
}.disposed(by: disposeBag)
}
Timer的使用
func learTimer() {
let timer:Observable<Int> = Observable<Int>.interval(1, scheduler: MainScheduler.instance)
timer.subscribe(onNext: { (num) in
print(num)
}).disposed(by: disposeBag)
}
還有什么是一句代碼解決不了的事,如果有,那就再加一行?。?!
生活如此美好,今天就點(diǎn)到為止。。。