1、我们如果想实现,点击view就可以让view中的文本框停止编辑的话,我们可以这么做在Storyboard中拖拽一个手势出来,然后在Referencing Outlets Collection中要去和view去关联器来。
然后我们在代码中就可以直接进行写了
//第一种实现方式
tapGestureRecognizer.rx.event
.subscribe(onNext: { [unowned self] _ in
self.view.endEditing(true)
}).disposed(by: disposeBag)
//第二种实现方式
tapGestureRecognizer.rx.event.bind { [unowned self] _ in
self.view.endEditing(true)
}
.disposed(by: disposeBag)
2、把label和textField进行绑定
textField.rx.text
.bind(to: textFieldLabel.rx.text)
.disposed(by: disposeBag)
3、计算文本框内内容的字数
textView.rx.text.asDriver()
.map {
"Character count: \($0!.count)"
}
.drive(textViewLabel.rx.text)
.disposed(by: disposeBag)
//我们当然还可以这样,加一个orEmpty就可以不用强行解包了
textView.rx.text.orEmpty.asDriver()
.map {
"count: \($0.count)"
}
.drive(textViewLabel.rx.text)
.disposed(by: disposeBag)
4、可以将按钮点击的时候和一些我们需要进行的操作给绑定到一起
button.rx.tap
.bind {
self.buttonLabel.text! += "点击"
self.view.endEditing(true)
//这里就会用动画效果了
UIView.animate(withDuration: 0.3) {
self.view.layoutIfNeeded()
}
}
.disposed(by: disposeBag)
5、UIStepper的value绑定到label上面
stepper.rx.value
.map { String($0) }
.bind(to: stepperLabel.rx.text)
.disposed(by: disposeBag)
6、绑定 segmentedControl的selectIndex,这里的value其实就是selectIndex,然后skip(1)是跳过响应的设置segmentedControlLabel的text第一个设置为-1的步骤
segmentedControl.rx.value
.skip(1)
.bind { [unowned self] in
self.segmentedControlLabel.text = "Selected\($0)"
UIView.animate(withDuration: 0.3) {
self.view.layoutIfNeeded()
}
}
.disposed(by: disposeBag)
效果图
7、根据UISlider的变化来改变进度条的值
slider.rx.value
.bind(to: progressView.rx.progress)
.disposed(by: disposeBag)
8、利用开关是控制网络指示器的隐藏和显示和转动还是不转动
switch.rx.value
.map { !$0 }
.bind(to: activityIndicator.rx.isHidden)
.disposed(by: disposeBag)
switch.rx.value.asDriver()
.drive(activityIndicator.rx.isAnimating)
.disposed(by: disposeBag)
9、将日期选择器里面的日期给拿给label
datePicker.rx.date
.map { [unowned self] in
"date: " + self.dateFormatter.string(from: $0)
}
.bind(to: datePickerLabel.rx.text)
.disposed(by: disposeBag)
以及我们设置的日期格式器,NSDateFormatter是自带了几种格式,所以我们下面的就是去设置这些自带的格式
lazy var dateFormatter: DateFormatter = {
let formatter = DateFormatter()
formatter.dateStyle = .medium
formatter.timeStyle = .short
return formatter
}()