RxSwift优点:
- 复用 - 复用性比较强,减少代码量
- 清晰 - 声明不可变更,代码可读性强
- 思维 - 统一的函数响应式编程思维,熟练掌握后可触类旁通、举一反三
- 稳定 - RxSwift通过单元测试
- 风格 - 主流且较为前卫的代码风格
`
//MARK: - KVO
func setupKVO() {
self.rxStuent.rx.observeWeakly(Int.self, "age")
.subscribe { value in
print("(self.rxStuent.name) is (value) old")
}
.disposed(by: disposeBag)
}
//MARK: - button响应
func setupButton() {
self.rxBtn.rx.tap
.subscribe { _ in
print("you click done")
}
.disposed(by: disposeBag)
self.rxBtn.rx.controlEvent(.touchDown)
.subscribe { _ in
print("touch down")
}
.disposed(by: disposeBag)
self.rxBtn.rx.controlEvent(.touchCancel)
.subscribe { _ in
print("touch cancel")
}
.disposed(by: disposeBag)
}
//MARK: - textfiled
func setupTextFiled() {
self.textFld.rx.text.orEmpty.changed
.subscribe { text in
print(text)
}
.disposed(by: disposeBag)
self.textFld.rx.text.changed// changed 在textfile有变化时才触发值绑定,没有changed则在初始化序列时触发
.bind(to: self.rxBtn.rx.title())
.disposed(by: disposeBag)
self.textFld.rx.text.changed
.bind(to: self.titleLab.rx.text)
.disposed(by: disposeBag)
}
//MARK: - scrollView
func setupScrollerView() {
self.rxScrollView.rx.contentOffset.changed
.subscribe { [weak self]contentSet in
self?.view.backgroundColor = UIColor.init(red: contentSet.y/255.0 * 0.2, green: contentSet.y/255.0 * 0.4, blue: contentSet.y/255.0 * 0.6, alpha: 1)
}
.disposed(by: disposeBag)
}
//MARK: - 手势
func setupGestureRecognizer() {
let tap = UITapGestureRecognizer()
self.titleLab.addGestureRecognizer(tap)
self.titleLab.isUserInteractionEnabled = true
tap.rx.event.subscribe { sender in
print(sender.view!)
}
.disposed(by: disposeBag)
}
//MARK: - 通知
func setupNotification() {
NotificationCenter.default.rx.notification(UIResponder.keyboardWillShowNotification)
.subscribe { noti in
print(noti)
}
.disposed(by: disposeBag)
\
}
//MARK: - timer定时器
func setupTimer() {
rxTimer = Observable.interval(.seconds(1), scheduler: MainScheduler.instance)
rxTimer.subscribe { num in
print(num)
}
.disposed(by: disposeBag)
}
//MARK: - 网络请求
func setupNetwork() {
let url: URL! = URL(string: "www.baidu.com")
URLSession.shared.rx.response(request: URLRequest(url: url))
.subscribe { response, data in
print(response)
}
.disposed(by: disposeBag)
}
`